Java 如何计算平均分数?
我正在制作一个直方图,它收集学生分数的结果,并显示在一定范围内的分数,例如0-29或70-100 我想知道如何编辑代码,以便计算平均分数。我知道平均分数是通过将所有数字相加,然后除以数字的数量来计算的,但我在将其应用到我的程序中时遇到了困难 这是我的密码:Java 如何计算平均分数?,java,eclipse,Java,Eclipse,我正在制作一个直方图,它收集学生分数的结果,并显示在一定范围内的分数,例如0-29或70-100 我想知道如何编辑代码,以便计算平均分数。我知道平均分数是通过将所有数字相加,然后除以数字的数量来计算的,但我在将其应用到我的程序中时遇到了困难 这是我的密码: public static void main(String[] args) { int studentMark = 0; // ranges from (1)0-29, (2)30-39, (3)40-69, (4)70
public static void main(String[] args) {
int studentMark = 0;
// ranges from (1)0-29, (2)30-39, (3)40-69, (4)70-100 (4 ranges)
int firstRange = 0; // (1)
int secondRange = 0; // (2)
int thirdRange = 0; // (3)
int fourthRange = 0; // (4)
// counts all 'mark' attempts (except anything > 100)
int numberOfStudents = 0;
Scanner input = new Scanner(System.in);
do{
System.out.println("Enter a mark from 1-100: ");
studentMark = input.nextInt();
if (studentMark < 29)
{
firstRange++;
numberOfStudents++;
}
if ((studentMark > 29) && (studentMark <= 39))
{
secondRange++;
numberOfStudents++;
}
if ((studentMark <= 69) && (studentMark > 39))
{
thirdRange++;
numberOfStudents++;
}
if ((studentMark <= 100) && (studentMark > 69))
{
fourthRange++;
numberOfStudents++;
}
}while ((studentMark <= 100))
System.out.println("\nResults: \n");
System.out.println("Number of students in total: " + numberOfStudents);
System.out.println("\nStudents who ranged from 0-29: " + firstRange );
System.out.println("Students who ranged from 30-39: " + secondRange);
System.out.println("Students who ranged from 40-69: " + thirdRange);
System.out.println("Students who ranged from 70-100: " + fourthRange);
}
publicstaticvoidmain(字符串[]args){
int studentMark=0;
//范围从(1)0-29,(2)30-39,(3)40-69,(4)70-100(4个范围)
int firstRange=0;//(1)
int secondRange=0;//(2)
int thirdRange=0;/(3)
int-fourthRange=0;//(4)
//统计所有“标记”尝试次数(任何大于100的尝试除外)
int numberOfStudents=0;
扫描仪输入=新扫描仪(System.in);
做{
System.out.println(“输入1-100之间的标记:”);
studentMark=input.nextInt();
如果(学生分数<29)
{
firstRange++;
学生人数++;
}
如果((studentMark>29)和&(studentMark除了每个范围的计数外,您还需要保留所有等级的总数和总计数(或只添加单个范围的总数)边界测试是重复的,并且至少有两个案例未被处理:
-排名=29
-等级<0
下面是一个简化代码:
// ranges from (1)0-29, (2)30-39, (3)40-69, (4)70-100 (4 ranges)
final int[] roofs = new int[] {30, 40, 70, 101};
final int[] compters = new int[roofs.length];
final double[] sums = new double[roofs.length];
final double[] means = new double[roofs.length];
final Scanner input = new Scanner(System.in);
do {
System.out.println("Enter a mark from 0-100: ");
final int studentMark = input.nextInt();
int index = -1;
if (studentMark < 0) {
continue; // here to be ignored
} else if (studentMark < roofs[0]) {
index = 0;
} else if (studentMark < roofs[1]) {
index = 1;
} else if (studentMark < roofs[2]) {
index = 2;
} else if (studentMark < roofs[3]) {
index = 3;
} else {
break;
}
compters[index]++;
sums[index] += studentMark;
} while (true);
input.close();
final int numberOfStudents = Arrays.stream(compters).sum();
IntStream.range(0, roofs.length).forEach(i -> means[i] = sums[i] / compters[i]);
//范围从(1)0-29,(2)30-39,(3)40-69,(4)70-100(4个范围)
最终整数[]屋顶=新整数[]{30,40,70,101};
最终整数[]计算机=新整数[屋顶长度];
最终双[]和=新双[屋顶.长度];
最终双[]表示=新双[屋顶.长度];
最终扫描仪输入=新扫描仪(System.in);
做{
System.out.println(“输入0-100之间的标记:”);
final int studentMark=input.nextInt();
int指数=-1;
如果(学生分数<0){
continue;//此处将被忽略
}else if(studentMark<0]){
指数=0;
}否则如果(学生标记<屋顶[1]){
指数=1;
}否则如果(学生标记<屋顶[2]){
指数=2;
}否则如果(学生标记<屋顶[3]){
指数=3;
}否则{
打破
}
计算机[索引]+;
总和[指数]+=学生分数;
}虽然(正确);
input.close();
final int numberOfStudents=Arrays.stream(computers.sum();
IntStream.range(0,roof.length).forEach(i->表示[i]=总和[i]/计算机[i]);
你的代码有什么问题?我回滚了你上次的编辑,因为你用与问题无关的代码替换了代码部分。请避免这样做,也不要像在其他问题中那样完全删除代码部分。说得很好。我创建了一个名为keepMark
的变量并执行>keepMark=keepMark+studentMark;
在每个语句的末尾。当然,现在我可以用总数除以学生人数。谢谢!