嗨,大家好我试着制作一个普通的计算器(我现在正在学习java),一切都很好,除了一件事。 这是我的代码:
package projects;
import java.util.Scanner;
public class average {
public static void main (String[]args){
Scanner sc = new Scanner(System.in);
System.out.println("/////////////////////////////////");
System.out.println("/// Average Calculator ///");
System.out.println("/////////////////////////////////");
System.out.println("How many numbers: ");
int totalnumbers = sc.nextInt();
int average = 0;
int[] list;
list = new int [totalnumbers];
for(int X = 1 ; X <= totalnumbers ; X++){
System.out.println("Please choose number " + X +": ");
list[X] = sc.nextInt();
average+=list[X];
}
System.out.println("Your average is:" + (average/totalnumbers));
sc.close();
}
}
我无法弄清楚什么是错的,但当它应该给我平均值时,它会给我这个错误:
线程中的异常&#34; main&#34; java.lang.ArrayIndexOutOfBoundsException:5 在projects.average.main(average.java:19)
答案 0 :(得分:1)
totalnumbers
个数组以索引0开头,以索引totalnumbers-1
结束
您的X从1迭代到totalnumbers
,因此X到达totalnumbers
时会出现异常。
答案 1 :(得分:1)
数组索引从0到N-1。
当您尝试使用list[X]
访问x == totalnumbers
时,会发生运行时异常。
改变这个:
for(int X = 1 ; X <= totalnumbers ; X++){
System.out.println("Please choose number " + X +": ");
list[X] = sc.nextInt();
average+=list[X];
对此:
for(int X = 0 ; X < totalnumbers ; X++){
System.out.println("Please choose number " + (X+1) +": ");
list[X] = sc.nextInt();
average+=list[X];