所以我写了这段代码为一类项目,它有两个问题。的Java 8E:逻辑错误和数组索引越界异常的程序
- 当运行时,显示器是一个ArrayIndexOutOfBoundsException异常:10
- 运行时(下面详述)的程序无法正常工作目前我不能识别任一异常,或者逻辑错误。
它可能这两个是相关的。帮助是虚心请:)
该方案需要10个的输入值,然后由天气或不是它们是消极的,奇数或偶数将它们分开。这些值应该放入数组中,并且数组的值应该作为3个单独的列输出,行数受最长数组长度限制。目前输入值为10 9 8 7 6 5 4 -3 -2 -1
,输出为1行,读数为-2 -1 -1
。
import java.util.Scanner;
public class APComSci9p1 {//Start program
public static void main(String[] args) {//Start Main
//Initilize inputs
Scanner scnKey = new Scanner(System.in);
//Initialize Arrays
int[] aOriginValues,
aEvenList,
aOddList,
aNegitiveList;
aOriginValues = new int[10];
aEvenList = new int[10];
aOddList = new int[10];
aNegitiveList = new int[10];
//Initialize Array index Variables
int iInput;
int iListControlE = 0;
int iListControlO = 0;
int iListControlN = 0;
//Start Loop
for (iInput = 0; iInput <= 9; iInput++){
System.out.print("Input value: ");
aOriginValues[iInput] = scnKey.nextInt();
//Start if/else
if ((aOriginValues[iInput] % 2) == 0){
aEvenList[iListControlE] = aOriginValues[iInput];
}else {
aOddList[iListControlO] = aOriginValues[iInput];
}//end if/Else
if (aOriginValues[iInput] < 0){
aNegitiveList[iListControlN] = aOriginValues[iInput];
}//end if
}//End loop
//Initialize Loop Specific variables
int iLimit;
//Start if/else #2
if((aEvenList.length >= aOddList.length) && (aEvenList.length >= aNegitiveList.length)){
iLimit = aEvenList.length;
}else if((aOddList.length >= aEvenList.length) && (aOddList.length >= aNegitiveList.length)){
iLimit = aOddList.length;
}else{
iLimit = aNegitiveList.length;
}//End if/else #2
System.out.println(" Even Odd Negitive ");
for (int iControl = 0; iControl <= iLimit; iControl ++){
System.out.printf("%,12d%,11d%,12d%n", aEvenList[iControl], aOddList[iControl], aNegitiveList[iControl]);
}
}//End Main
}//End program
异常的堆栈跟踪也告诉你它发生在哪里的行号。您尝试访问没有此索引的数组中的索引10。 – Henry
我意识到错误在说什么,我只是无法找到它发生的地方。对我来说(我知道一个偏见的来源)我不能看到我在10个数值的数组中引用10的索引。 – ShiftGuazz