我有一个包含28个字符的数组。我正在尝试使用for循环来打印字符串及其长度,以便下一行删除上一行中的最后一个字符。例如:
7 Example
6 Exampl
5 Examp
4 Exam
3 Exa
2 Ex
1 E
到目前为止,我有这个,但它不是打印。我做错了什么?
for(int index=28; index <= nameArray.length; index--)
{
System.out.print(nameArray[index]);
}
答案 0 :(得分:3)
就这么简单..
class A {
public static void main(String [] args) {
String array = "Example";
for(int i=7;i>0;i--) {
System.out.print(i+" ");
System.out.println(array.substring(0, i));
}
}
}
// Output :
7 Example
6 Exampl
5 Examp
4 Exam
3 Exa
2 Ex
1 E
答案 1 :(得分:2)
如果长度为28个字符,则无法在28处开始索引.Java中的数组从零开始,因此这意味着索引的范围为0到27(长度为1)。
答案 2 :(得分:1)
首先,您可能希望中间条件为index > 0
,而不是index <= nameArray.length
(即使输入负数,始终也应该为真)。
其次,是否是您正在访问的字符的数组?如果是这样,那么我相信你知道,nameArray[index]
指的是字符,而不是字符串。
(另外,作为bobbymcr points out,28个元素的数组中的顶部索引是27,而不是28。)
要打印子字符串,首先应使用字符数组初始化String
,然后使用substring
打印越来越小的子字符串。
例如:
private static void printSubstrings(String input) {
for (int length = input.length(); length > 0; length--) {
System.out.printf("%d %s\n", length, input.substring(0, length));
}
}
然后,如果nameArray
是char[]
,您可以使用String(char[])
构造函数传递给此方法:
printSubstrings(new String(nameArray));
示例输入:
char[] nameArray = new char[] { 'E', 'x', 'a', 'm', 'p', 'l', 'e' };
printSubstrings(new String(nameArray));
输出:
7 Example
6 Exampl
5 Examp
4 Exam
3 Exa
2 Ex
1 E
答案 3 :(得分:1)
始终记住数组索引从0开始
[E][x][a][m][p][l][e]
0 1 2 3 4 5 6
当你有String时,我不明白你为什么要使用char数组。 在这里,我建议你解决方案:
1将char []转换为String
2 - 迭代String对象并使用String类中的一些方法来获得所需的结果:
public class Example
{
public static void main(String[] args) {
//Here an array with 28 characters
char[] array = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p'
,'q','r','s','t','u','v','w','x','y','z','!','@'};
//For easier manipulation i will just transform that array to String
//Why not, String was invented so we dont have to use char[].
String arrayAsString = new String(array);
//Use the methods that String class provides, to make the solution easier
for(int i=0;i < array.length;i++) {
System.out.println((i+1) + " " + arrayAsString.substring(0,(arrayAsString.length()-i)));
}
}
}
答案 4 :(得分:0)
for(int index=28; index <= nameArray.length; index--)
首先,你试图从索引28
开始 - 那是不存在的。数组基于0
,这意味着它们从0
转到length - 1
其次,你说索引必须小于或等于长度。既然你从最后到开始,那将永远是真的。
for (int index = nameArray.length - 1; index >= 0; index--)
这就是你要找的东西。