打印阵列

时间:2011-06-11 17:12:48

标签: java arrays printing

我有一个包含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]);
            }

5 个答案:

答案 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));
    }
}

然后,如果nameArraychar[],您可以使用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--)

这就是你要找的东西。