0

作为我家庭作业的一部分,我有以下代码:

  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级”的成绩数量?

4

3 回答 3

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.
  }
于 2012-05-29T04:38:16.003 回答
1

也许是因为您在循环中sum = marks.size();紧随其后sum += mark;

此外,您应该对分数进行加总,而不是值,因此如果分数低于 50(例如++sum),您应该只加 1,而不是实际分数。

于 2012-05-29T04:07:57.007 回答
1

那是因为您在调用 sum += mark; 之后将 sum 设置为 Marks.size();只需删除 som=marks.size() 行。

于 2012-05-29T04:07:59.653 回答