【问题标题】:Array list - size of level?数组列表 - 级别的大小?
【发布时间】:2012-05-29 04:05:17
【问题描述】:

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

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

【问题讨论】:

    标签: java arrays return


    【解决方案1】:

    其他的答案已经指出了确切的问题,看你的cmets可能是sn-p可以更好解释的代码。见下文

      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.
      }
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        可能是因为您的循环中紧跟在此 sum += mark; 之后有此 sum = marks.size();

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

        【讨论】:

        • 谢谢,像这样?私有 int calculateLevelR() { int sum = 0; for (整数标记: 标记) { if(标记
        猜你喜欢
        • 2016-05-25
        • 1970-01-01
        • 2014-05-27
        • 2012-05-13
        • 1970-01-01
        • 2019-11-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多