2012-05-29 43 views
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級」的成績等級?

回答

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

非常感謝! – user1419306

1

也許是因爲您在此循環中有此sum += mark;之後此sum = marks.size();

此外,你應該總結成績金額,而不是價值,所以如果一個商標不到50(例如++sum),而不是實際商標,你應該只加1。

+0

謝謝你,所以這樣的事情? private int calculateLevelR(){ int sum = 0; (整數標記:標記) if(mark <50) sum = mark ++; } return sum; } – user1419306

+0

因爲它仍然不起作用 – user1419306

1

那是因爲您在調用sum + = mark之後將sum設置爲marks.size() 只需刪除som = marks.size()行。