【问题标题】:Why won't this print in Reverse?为什么不能反向打印?
【发布时间】:2014-04-22 08:05:05
【问题描述】:

我有一个非常简单的问题,但我似乎无法解决它。我在这段代码中遇到了越界错误

int c = 0;
System.out.println();
System.out.println("Printing array in Reverse order:");
for (int i = array.length ; i >= -1; i--)
{
   System.out.println(array[i] +" ");
   c++;
   if(c == 10) 
   {
       System.out.println();
       c=0;
   }
}

怎么了?

【问题讨论】:

    标签: java arrays for-loop indexoutofboundsexception


    【解决方案1】:

    你得到一个 IndexOutOfBounds 因为你从数组开始

    int c = 0;
        System.out.println();
        System.out.println("Printing array in Reverse order:");
        for (int i = array.length -1; //HERE
                              i >= 0;//HERE
                              i--) {
          System.out.println(array[i] +" ");
          c++;
          if(c == 10) {
           System.out.println();
           c=0;
          }
        }
    

    【讨论】:

      【解决方案2】:
      for (int i = array.length ; i >= -1; i--) {
      

      错了,数组从索引 0 开始,所以“length”数组是从索引 0 到索引“length - 1”

      所以你的代码是错误的,你应该使用

      for (int i = array.length - 1 ; i >= 0; i--) {
      

      【讨论】:

        【解决方案3】:

        在 Java 中,数组索引从 0 变为“length - 1”。因此,如果您从array.length 开始,您将尝试访问数组的位置。如果您尝试访问 -1 索引,也会发生同样的情况,因为您的最小索引为 0。

        【讨论】:

          【解决方案4】:

          这里有一小段代码可以帮助你得到相反的结果:)

          public class newarray {
          
              public static void main(String args[]){
          
                  int arr[]={10,20,30};
                  int size=arr.length;
                  for(int i=size-1;i>=0;i--){
                      System.out.println(arr[i]);
          
          
                  }
          
          
              }
          }
          

          输出:

          30 20 10

          【讨论】:

            猜你喜欢
            • 2017-11-24
            • 2013-09-23
            • 2021-03-10
            • 2012-07-14
            • 2016-02-01
            • 2021-04-13
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多