打印数组
我有一个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]);
}
就这么简单..
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
如果长度为28个字符,则无法启动在爪哇28阵列的索引是从零开始的,从而意味着该索引可以从0到27的范围内(长度 - 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
for(int index=28; index <= nameArray.length; index--)
首先,你想在指数28
启动 - 不存在。阵列是0
的基础,这意味着他们从0
到length - 1
其次,你是说索引必须小于或等于长度。既然你要从头到尾,那永远是真的。
for (int index = nameArray.length - 1; index >= 0; index--)
这就是你要找的。
在最后一个例子中,也许你的意思是'nameArray.length' – 2011-06-11 17:20:22
已经在编辑;) – 2011-06-11 17:20:54
始终remeber的数组索引从0
[E][x][a][m][p][l][e]
0 1 2 3 4 5 6
开始我不明白你为什么用字符数组打破你的头,当你有字符串。 在这里,我提出你一个解决方案,其中:
1变换炭[]为String
2-迭代字符串对象,并使用从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)));
}
}
}
为什么索引从28开始? 'index 2011-06-11 17:16:14
伙计@ SO ...这是这个家伙关闭2天前提出的同样的问题:http://stackoverflow.com/questions/6286524/using-an-if-statement-to-examine-an-array -in-java – 2011-06-11 17:32:09
这不是同一个问题。我有一个分配使用相同的数组与多个部分。我已经明白了这一点。 – JDB 2011-06-11 17:38:30