Can';t跟踪java.lang.ArrayIndexOutOfBoundsException:
我正在尝试解决以下简单的编程练习:“编写一个程序,读取1到10之间的整数,并计算每个整数的出现次数。假设输入以0结尾”。我想出了以下解决办法。我不熟悉调试器,并在过去3小时内尝试跟踪Can';t跟踪java.lang.ArrayIndexOutOfBoundsException:,java,debugging,Java,Debugging,我正在尝试解决以下简单的编程练习:“编写一个程序,读取1到10之间的整数,并计算每个整数的出现次数。假设输入以0结尾”。我想出了以下解决办法。我不熟悉调试器,并在过去3小时内尝试跟踪ArrayIndexOutOfBoundsException。也许有人能看到出现的whereArrayIndexOutOfBoundsException import java.util.Scanner; public class Exercise07_03 { /** Main method */
ArrayIndexOutOfBoundsException
。也许有人能看到出现的whereArrayIndexOutOfBoundsException
import java.util.Scanner;
public class Exercise07_03 {
/** Main method */
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int[] numbers = new int[10];
System.out.print("Enter up to 10 integers between 1 and 10" +
"inclusive (input ends with zero): ");
int i = 0;
do {
numbers[i] = input.nextInt();
i++;
} while (numbers[i] != 0 && i != 9);
displayCounts(countNumbers(numbers));
}
/** Count the occurrences of each number */
public static int[] countNumbers(int[] numbers) {
int[] counts = new int[10];
for (int i = 0; i < counts.length; i++)
counts[numbers[i] - 1]++;
return counts;
}
/** Display counts */
public static void displayCounts(int[] counts) {
for (int i = 1; i < counts.length + 1; i++)
if (counts[i - 1] != 0)
System.out.println(i + " occurs " + counts[i - 1] + " time");
}
}
import java.util.Scanner;
公开课练习07_03{
/**主要方法*/
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
整数[]个数=新整数[10];
System.out.print(“输入最多10个介于1和10之间的整数”+
“包含(输入以零结尾):”;
int i=0;
做{
数字[i]=input.nextInt();
i++;
}而(数字[i]!=0&&i!=9);
显示计数(计数(数字));
}
/**计算每个数字的出现次数*/
公共静态int[]计数编号(int[]编号){
int[]计数=新的int[10];
for(int i=0;i
结果-如果输入包含0,则为1。问题在于:
public static int[] countNumbers(int[] numbers) {
int[] counts = new int[10];
for (int i = 0; i < counts.length; i++)
counts[numbers[i] - 1]++;
return counts;
}
这将检查(数字1)是否大于零。如果不是,则使用0。如果为true,则使用数字-1。ArrayIndexOutofBounds异常通常发生在您在某些地方出现“off by one”错误时。如果调试器有问题,不妨在循环中进行一些打印调试,并验证您的索引在任何时候都是您认为的索引。我想我实际上也说过同样的话,但一句赞美就可以了;)不,解释问题就行了。我走过去告诉他问题出在哪里以及如何解决。
public static int[] countNumbers(int[] numbers) {
int[] counts = new int[10];
for (int i = 0; i < counts.length; i++)
counts[numbers[i] - 1]++;
return counts;
}
counts[(number - 1 > 0) ? number - 1 : 0]++;