【发布时间】:2018-04-19 09:44:39
【问题描述】:
我正在开发一个程序,该程序必须在执行两个 for 循环(一个用于输入的成绩总和,一个用于最高和最低成绩)之前检查某些条件(如果未执行则发出错误消息)而且我不确定如何对它们进行排序。
我的代码也让我收到此错误 -->线程“main”java.lang.ArrayIndexOutOfBoundsException 中的异常:0,我不确定如何修复该错误
如果有人可以帮助我制作正确序列的骨架,我将不胜感激!
这是我的代码(我知道它看起来很疯狂,抱歉我正在学习!):
import java.util.Scanner;
public class Homework {
public static void main (String[] args) {
Scanner input = new Scanner(System.in);
int numberOfMarks, average, sum, total, mark;
numberOfMarks = 0;
int [] marks = new int[numberOfMarks];
int smallest, largest;
//System.out.println("Enter number of marks: ");
numberOfMarks = input.nextInt();
if(numberOfMarks<0) {
System.out.println("Number of marks must be greater than 0!!");
}
//System.out.println("Enter "+numberOfMarks+"marks: ");
mark = input.nextInt();
if(mark<0) {
System.out.println("Negative marks not allowed!!!");
} else if(mark>100) {
System.out.println("Marks above 100% not allowed!!!");
}
sum = 0;
for(int i = 0; i < marks.length; i++) {
sum += marks[i];
}
smallest=marks[0];
largest=marks[0];
for(int i=1;i<marks.length;i++) {
if(marks[i]>largest) {
largest=marks[i];
} else if(marks[i]<smallest) {
smallest=marks[i];
}
average = sum/numberOfMarks;
System.out.println("Highest Mark = "+largest);
System.out.println("Lowest Mark = "+smallest);
System.out.println("Average = "+average);
}
}
}
【问题讨论】:
-
在要求人们尝试阅读之前,您应该正确缩进代码。
-
1.正确格式化您的代码。 2.minimal reproducible example 3.当时一个问题,不然太宽泛了。 4.stackoverflow.com/questions/5554734/…
-
您的数组大小为
0,marks[0]尝试访问第一个条目,所以它崩溃了。 -
numberOfMarks = 0; int [] marks = new int[numberOfMarks];将创建一个 empty 数组。您必须在创建之前获取用户输入 -
int [] marks = new int[numberOfMarks];
标签: java for-loop if-statement