数组列表 - 级别的大小?

时间:2012-05-29 04:05:17

标签: java arrays return

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

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

3 个答案:

答案 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()行。