作为我作业的一部分,我有以下代码:
ArrayList <Integer> marks = new ArrayList();
Collections.addAll(marks, (Integer.parseInt(markInput.getText())));
private void analyzeButtonActionPerformed(java.awt.event.ActionEvent evt)
{
analyzeTextArea.setText("Number at level R:" + calculateLevelR());
}
private int calculateLevelR() {
int sum = 0;
for (Integer mark: marks) {
if(mark < 50)
sum += mark;
sum = marks.size();
}
return sum;
}
当用户输入一组成绩时,我正在尝试计算并显示“等级R”(低于50)的等级数量,但上述代码无法正常工作,而是计算出整个阵列。
如何才能计算出“等级R”的等级数量?
答案 0 :(得分:2)
其他答案已经指出了确切的问题,看看你的评论可能是一个代码片段可以更好地解释。见下文
private int calculateLevelR() {
int sum = 0;
for (Integer mark: marks) {
if(mark < 50)
sum += mark;
sum = marks.size(); // If mark is less than 50 add mark to sum else sum = size of arrayList
}
return sum;
}
您需要的是:
private int calculateLevelR() {
int sum = 0;
for (Integer mark: marks) {
if(mark < 50)
sum++; // If mark is less than 50 increment sum
}
return sum; // finally when check all marks return sum, this sum will represent total number of marks less than 50.
}
答案 1 :(得分:1)
也许是因为你在循环中sum = marks.size();
后面有sum += mark;
。
此外,您应该对成绩金额而不是价值进行求和,因此如果商标低于50(例如++sum
),则应仅添加1,而不是实际商标。
答案 2 :(得分:1)
这是因为你在调用sum + = mark之后将sums设置为marks.size(); 只需删除som = marks.size()行。