2016-11-18 190 views
1

我是新来的java,我想知道如何修复我的程序,该程序必须从用户输入中获取数字,然后将它们存储在数组中,然后向前并向后打印这些数字。我已经设法让程序向前打印;然而,当我尝试打印向后我得到线程在数组中向后打印数字

异常 “主要” java.lang.ArrayIndexOutOfBoundsException:4 在arrays4Days.arrayS1.main(arrayS1.java:55)

import java.util.*; 
public class arrayS1 { 
    public static void main(String[] args) { 
     Scanner console = new Scanner(System.in); 
     System.out.print("How many numbers will you enter? "); 
     int count = console.nextInt(); 
     int myArray[]= new int [count]; 

     for (int i =0; i < myArray.length ; i++) { 
      System.out.print("Type a number: "); 
      int number=console.nextInt(); 
      myArray[i]=number; 
     } 

     System.out.println(); 
     System.out.println("Your numbers in forward order:"); 

     for (int i = 0 ; i < myArray.length ; i++) { 
      System.out.println(myArray[i]); 
     } 

     System.out.println(); 
     System.out.println("Your numbers in backward order:"); 

     for (int i = myArray.length ; i> 0 ; i--) { 
      System.out.println(myArray[i]); 
     } 

    } 
} 
+0

'INT I = myArray.length':你能解释一下为什么你认为一个数组的长度也产生有效的索引?如果是这种情况,那么为什么你在第一个循环中写了'i Tom

+0

我认为myarray.length表示存储在数组中的值的数量。我用它来设置for循环可以循环的最大次数(用于我的第一个循环)。 –

回答

3

注意,在你的第一个循环,i从零开始,然后上升到 - 但不等于 - 数组的长度

for (int i = 0 ; i < myArray.length ; i++) { 

所以第二环也应该开始在这个位置

for (int i = myArray.length - 1; i>= 0 ; i--) { 
    System.out.println(myArray[i]); 
} 

,应该深入到零