2015-09-10 64 views
-2

我不知道为什么当我运行它时,它设法通过第一部分,但是一旦它遍历数字并将它们全部打印出来。但一旦完成,它会显示java.lang.ArrayindexOutOfBoundsException为什么我会得到ArrayIndexOutOfBoundException?

package database; 
import java.util.Scanner;  
public class Run { 
    public static void main(String[] args) { 
     int counting =0; 
     int count = 0; 
     int totalAddUp =0; 
     int finalNumber = 0; 
     int searchingPlus = 0; 
     int caseSwitching = 0; 

     Scanner scan = new Scanner(System.in); 
     int userLength = 1000000000; 

     System.out.println("Please enter the number you wish to find exponentially: "); 
     int userInput = scan.nextInt(); 

     System.out.println("Please enter the length in which you wish to find: "); 
     counting = scan.nextInt(); 

     int[] array = new int[counting]; 

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

      finalNumber = userInput + finalNumber; 
      array[totalAddUp] = finalNumber; 
      System.out.println(array[totalAddUp]); 
      totalAddUp++; 
     } 

     System.out.println("Press 1 to search for a certain number or press 2 to end the program"); 

     switch(caseSwitching) { 

     case 1: 
      System.out.println("Please enter a number in which you would like to search"); 
      int searching = scan.nextInt(); 
      while(searchingPlus > userInput) { 
       if(userInput == array[searchingPlus]) { 
        System.out.println(array[searchingPlus]); 
       } 
       searchingPlus++; 
      } 

      break; 
     case 2: 
      System.out.println("Thanks have a great day"); 
      break; 
     } 
    } 
} 
+0

你能解释你的'案例1:'正在试图做什么? –

+0

尝试用我 Nabin

+0

> for(int i = 0; i

回答

4

你,因为在你的for回路你要array.lenth + 1java.lang.ArrayindexOutOfBoundsException

试试这个:

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

     finalNumber = userInput + finalNumber; 
     array[totalAddUp] = finalNumber; 
     System.out.println(array[totalAddUp]); 
     totalAddUp++; 
    } 

而且也是另一个问题你的代码是当你输出

 System.out.println("Press 1 to search for a certain number or press 2 to end the program"); 

和你没有任何输入来获得。

0

请注意下面的循环:

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

     finalNumber = userInput + finalNumber; 
     array[totalAddUp] = finalNumber; 
     System.out.println(array[totalAddUp]); 
     totalAddUp++; 
    } 

阵列索引从0开始直至其各自length。因此,您试图操作索引中的数组项,其范围为[0,1,...,length,length+1],这会引发ArrayindexOutOfBoundsException异常。

所以,你可以使用:

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

     finalNumber = userInput + finalNumber; 
     array[totalAddUp] = finalNumber; 
     System.out.println(array[totalAddUp]); 
     totalAddUp++; 
    } 

另外,请注意添加以下行来读取一个值caseSwitching

caseSwitching = scan.nextInt();

0

对(INT I = 0;我< array.length;我++){

 finalNumber = userInput + finalNumber; 
     array[totalAddUp] = finalNumber; 
     System.out.println(array[totalAddUp]); 
     totalAddUp++; 
    } 

在这里这应当是因为 “array.length + 1” 增加阵列极限工作

相关问题