【问题标题】:Printing an array打印数组
【发布时间】:2011-06-11 17:12:48
【问题描述】:

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

【问题讨论】:

  • 为什么索引从 28 开始? index &lt;= nameArray.length 会产生错误。你为什么要向后打印数组?
  • Guys @ SO... 这与 2 天前关闭的这个人提出的问题相同:stackoverflow.com/questions/6286524/…
  • 这不是同一个问题。我有一个使用相同数组的多个部分的任务。我已经想通了。

标签: java arrays printing


【解决方案1】:

就这么简单..

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

【讨论】:

    【解决方案2】:

    如果长度为 28 个字符,则不能从 28 开始索引。Java 中的数组是从零开始的,这意味着索引的范围可以从 0 到 27(长度 - 1)。

    【讨论】:

      【解决方案3】:

      首先,您可能希望中间条件为index &gt; 0,而不是index &lt;= 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
      

      【讨论】:

        【解决方案4】:

        永远记住数组索引从 0 开始

        [E][x][a][m][p][l][e] 
         0  1  2  3  4  5  6
        

        我不明白为什么你用 char 数组打破你的头脑,当你有 String 时。 在这里,我向您提出一个解决方案:

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

        【讨论】:

          【解决方案5】:
          for(int index=28; index <= nameArray.length; index--)
          

          首先,您尝试从索引28 开始 - 这不存在。数组基于0,这意味着它们从0 变为length - 1

          其次,您是说索引必须小于或等于长度。既然你要从头到尾,那将永远是正确的。

          for (int index = nameArray.length - 1; index >= 0; index--)
          

          这就是你要找的。

          【讨论】:

          • 在最后一个例子中,也许你的意思是nameArray.length
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-03-20
          • 2018-08-15
          • 2020-02-12
          • 2014-05-20
          • 1970-01-01
          相关资源
          最近更新 更多