Java 执行while循环异常
这段代码的目的是获取十个用户输入整数,并找到最大值以及该最大值的索引。对于这个特定的版本,我需要使用do-while循环 我可以输入十个数字,但是,在尝试获取最大数字及其索引时出现异常。我不完全确定如何着手解决这个问题。任何帮助或建议都将不胜感激,谢谢Java 执行while循环异常,java,exception,do-while,Java,Exception,Do While,这段代码的目的是获取十个用户输入整数,并找到最大值以及该最大值的索引。对于这个特定的版本,我需要使用do-while循环 我可以输入十个数字,但是,在尝试获取最大数字及其索引时出现异常。我不完全确定如何着手解决这个问题。任何帮助或建议都将不胜感激,谢谢 final int[] numbers; numbers = new int[10]; int largest = numbers[0]; int largest_i = 0; int counter = 0; final Scanner ke
final int[] numbers;
numbers = new int[10];
int largest = numbers[0];
int largest_i = 0;
int counter = 0;
final Scanner keyboard = new Scanner(System.in);
System.out.println("Please enter 10 numbers: ");
do {
numbers[counter] = keyboard.nextInt();
counter++;
} while (counter < numbers.length);
if (numbers[counter] >= largest) {
largest = numbers[counter];
largest_i = counter;
}
System.out.print("The largest number is: " + largest);
System.out.println(" ");
System.out.print("That number is stored at index " + largest_i);
final int[]数字;
数字=新整数[10];
int最大=数字[0];
int最大_i=0;
int计数器=0;
最终扫描仪键盘=新扫描仪(System.in);
System.out.println(“请输入10个数字:”);
做{
数字[计数器]=键盘.nextInt();
计数器++;
}while(计数器=最大值){
最大=数字[计数器];
最大_i=计数器;
}
系统输出打印(“最大数字为:“+最大”);
System.out.println(“”);
系统输出打印(“该数字存储在索引”+最大值i);
您可能会遇到索引越界异常。这是因为您在循环外执行if检查
if (numbers[counter] >= largest)...
然而,此时计数器是10,而索引只从0到9
将if块移动到循环中以检查最大值
do {
numbers[counter] = keyboard.nextInt();
if (numbers[counter] >= largest) {
largest = numbers[counter];
largest_i = counter;
}
counter++;
} while (counter < numbers.length);
do{
数字[计数器]=键盘.nextInt();
if(数字[计数器]>=最大值){
最大=数字[计数器];
最大_i=计数器;
}
计数器++;
}while(计数器
以下是找到最大数字的方法:
public static void main(String[] args) {
final int[] numbers;
numbers = new int[10];
int largest = Integer.MIN_VALUE;//set largest to minimum value
int counter = 0;
int index = 0;
final Scanner keyboard = new Scanner(System.in);
System.out.println("Please enter 10 numbers: ");
do {
numbers[counter] = keyboard.nextInt();//get the numbers here
keyboard.nextLine();
if(numbers[counter]>largest){//compare the entered number with the current largest number, if greater assign largest to the current number
largest = numbers[counter];
index = counter;//store the index of the largest number found
}
counter++;//increment array counter
} while (counter < numbers.length);
System.out.print("The largest number is: " + largest);
System.out.println(" ");
System.out.print("That number is stored at index " + index);
}
publicstaticvoidmain(字符串[]args){
最终整数[]个数;
数字=新整数[10];
int max=Integer.MIN_VALUE;//将最大值设置为最小值
int计数器=0;
int指数=0;
最终扫描仪键盘=新扫描仪(System.in);
System.out.println(“请输入10个数字:”);
做{
numbers[counter]=keyboard.nextInt();//在此处获取数字
keyboard.nextLine();
如果(数字[计数器]>最大值){//将输入的数字与当前最大值进行比较,如果较大,则将最大值分配给当前数字
最大=数字[计数器];
index=counter;//存储找到的最大数字的索引
}
计数器+++;//递增数组计数器
}while(计数器
您可以发布异常和堆栈跟踪吗?请发布异常堆栈跟踪在do while
循环中输出if
块。实际上,您1)只检查单个数字是否最大,2)当其值必然大于后数字的最大索引时,使用计数器,而循环计数器变量正好等于数组的大小,这意味着您试图访问一个超过其边界的值。除了indexoutofbound异常之外,您查找max number的逻辑不正确