Java 如何使用输入验证在do while循环中形成数组?
在最后一天,我一直得到Java 如何使用输入验证在do while循环中形成数组?,java,Java,在最后一天,我一直得到java.lang.ArrayIndexOutOfBoundsException:5 我知道为什么会发生这种情况,但我不知道如何解决它在访问数组之前,您可以增加索引,但不检查索引是否已经大于数组的大小。当用户输入天数时,在您的情况下,天数索引将大于5 另外,由于索引从0开始,而不是从1开始,因此没有索引5,但只有0-4我应该添加一个决策结构来检查索引是否大于数组的大小,还是有更好的方法?为什么需要立即递增索引?只需将它移到迭代的底部。我将它放在底部,仍然可以得到java.l
java.lang.ArrayIndexOutOfBoundsException
:5
我知道为什么会发生这种情况,但我不知道如何解决它在访问数组之前,您可以增加索引,但不检查索引是否已经大于数组的大小。当用户输入天数时,在您的情况下,天数索引将大于5
另外,由于索引从0开始,而不是从1开始,因此没有索引5,但只有0-4我应该添加一个决策结构来检查索引是否大于数组的大小,还是有更好的方法?为什么需要立即递增
索引
?只需将它移到迭代的底部。我将它放在底部,仍然可以得到java.lang.ArrayIndexOutofBounds异常:当我输入最后一天的销售额时,它将是5。因为你从不检查索引是否大于数组的大小。您可以添加索引
检查您的while状态,或者如果您想给用户一条额外的消息,如“不再有剩余天数”之类,则可以单独添加
public class Array {
public static void main ( String[] args ) {
int DAYS_SIZE = 5;
double[] sales = new double[DAYS_SIZE];
String input;
char userResponse;
Scanner keyboard = new Scanner(System.in);
double total = 0;
double average = 0;
int index = 0;
do {
index++;
System.out.print("Enter sales for day " + index + ": ");
sales[index] = keyboard.nextInt();
System.out.print("Another ( y or n )? " );
input = keyboard.next();
userResponse = input.charAt(0);
} while ( userResponse == 'Y' || userResponse == 'y');
}
}