我的任务是根据给出的分数总结超过100的任何超出部分。作业说明如下:
“数组testGrades包含NUM_VALS个测试分数。写一个for循环,将sumExtra设置为收到的额外总额额度。完全学分是100,所以100以上的额外学分是额外学分。例如:如果testGrades = {101,83,107, 90},然后sumExtra = 8,因为1 + 0 + 7 + 0是8。“
我目前的代码是:
import java.util.Scanner;
public class SumOfExcess {
public static void main (String [] args) {
final int NUM_VALS = 4;
int[] testGrades = new int[NUM_VALS];
int i = 0;
int sumExtra = -9999; // Assign sumExtra with 0 before your for loop
testGrades[0] = 101;
testGrades[1] = 83;
testGrades[2] = 107;
testGrades[3] = 90;
sumExtra = 0;
for (i = 0; i < NUM_VALS; ++i){
if (testGrades[i] > 100){
sumExtra = (testGrades[i] % 100);
}
}
System.out.println("sumExtra: " + sumExtra);
return;
}
}
答案 0 :(得分:5)
问题出在以下一行
sumExtra = (testGrades[i] % 100);
您始终为sumExtra
分配新值而不是总结。你应该用
sumExtra += (testGrades[i] % 100);
话虽如此,你还应该用减号替换你的模运算,以使你的代码在大于199的值下正常工作。
你也可以使用流:
sumExtra = IntStream.of(testGrades).filter(t -> t > 100).map(t -> t - 100).sum();
答案 1 :(得分:0)
这是我的答案!你几乎拥有它,只需更改为
sumExtra = 0;
for (i = 0; i < NUM_VALS; ++i){
if (testGrades[i] > 100){
sumExtra += (testGrades[i] % 100); // you had just =, but should be +=
}
}