2012-03-04 10 views
0

私は生徒の平均点数を表示しようとしていますが、間違った数値が表示されています。これが私が試したものです。どんな助けでも大歓迎です。平均(arraylistとの共同作業)java

import java.util.ArrayList; 

class Course 
{ 

    private ArrayList<Student> people = new ArrayList<Student>(); 

// return the average mark in the course 

    public double average() 
    { 
     double average = 0.0; 
     int i = 0; 

     for (i = 1; i < people.size(); i++) 
     { 
      int tmark = people.get(i).getMark() ; 
      { 
       average = tmark/i; 
      }  
     } 
     return average; 
    } 

} 
+0

コードがないか、まったく意味がありません。なぜavarage割り当ての周りのブロック?ここでのコードは基本的には「平均=最終生徒のマーク/リスト内の生徒の数」 – nfechner

+1

数字のシーケンスの平均を「手で」計算する方法を知っていますか?あなたはそれをどのように行うかを段階的に記述することから始めることができます。あなたのコードはまったく意味がありません。問題はJavaのリストをどう扱うかについての理解の欠如をはるかに超えています。 –

答えて

3

必ず、あなたは平均的な計算されていないこと..あなたはすべての値を合計した後のサイズで除算する必要があります。

public double average() 
{ 
    double average = 0.0; 
    for (int i = 0; i < people.size(); i++) { 
     average += people.get(i).getMark() ; 
    } 
    return average/people.size(); 
} 
0

これを変更しよう:

public double average() 
    { 
     double average = 0.0; 


     for (int i = 0; i < people.size(); i++) 
     { 
      int tmark = people.get(i).getMark() ; 
      { 
       average += tmark; 
      }  
     } 
     average /= people.size(); 

     return average; 
    } 

} 
4

まず、get()は0ベース、1-基づくものではありません。

第2に、iではなく、合計をpeople.size()で除算する必要があります。そうでなければ、最初の生徒は100分の1よりも重要な方法になります。

更新:と第3に、現在のコードは最後の生徒のみを考慮しているとは思わないのですか?他の人が述べたように

0

は、JavaでArrayListのインデックスは、あなたがここに代わりにfor each loopを使用する場合があります、ただし0

から始まります。交換:

for (i = 1; i < people.size(); i++) 

for (Student s : people) 

と総等級を合計し、その後@alfによって示唆されるようpeople.size()と分割します。

0

試してみてください。

double total = 0d; 
for(Student student : people) { 
    total += student.getMark(); 
} 
double average = total/(double)people.size(); 
2

あなたは上のあなたのコードを介して動作する必要があります紙。あなたは非常に独特なことをしています。ちょっとした紙を手に入れ、学生(またはマークのみ)のサンプル配列を書き留めて、一度にループ1の繰り返しを処理します。そしてこれらの質問に答えてください。

  • ループの始めにある各変数の値は?
  • 各ループの最後にある各変数の値はいくらですか?
  • ペンと紙で自分の平均をどのように計算しますか?
  • 上記の点はどのようにforループに変換できますか?すべての作業をforループで行う必要がありますか?

最後の1つです。 ArrayListまたは配列の最初の要素はインデックス0にあり、最後はインデックス(サイズ-1)にあることに注意してください。

例えば、

index: 0 1 2 
array: ['a', 'b', 'c'] 
size or length: 3