2016-07-15 9 views
0

クラスを基にしたリストからループを作成しようとしていますが、このエラーが発生しました: forは[ 'int'タイプのリストforは[int]型の式に[]を使用したインデックス付けを適用できません

ポイントは、学生の名前と資格をリストに登録するためのリストです(このリストには1クラスが必要です)。しかし、ループ内でこれはない働いて良い

public class Register 
{ 
    public string Name{ set; get; } 
    public int Note{ set; get; } 


    public string ask() 
    { 
     List<Register> Students = new List<Register>(); 
     var student= new Register(); 

     string question; 
     var r1 = "si"; 
     Console.WriteLine("Desea agregar un estudiante? "); 
     question= Console.ReadLine(); 

     while(question == r1) 
     { 
      Console.WriteLine("Cual es el nombre del estudiante?: "); 
      student.Name= Console.ReadLine(); 

      Console.WriteLine("Cual es la nota del estudiante?: "); 
      student.Note = int.Parse(Console.ReadLine()); 

      Students.Add(student); 

      Console.WriteLine("Desea agregargar otro estudiante?: "); 

      question = Console.ReadLine(); 

     } 
     for (int i = 1; i < Students.Count; i++) 
     { 
      if (***student.Note[i]*** >= 70) 
      { 
       Console.WriteLine($"{***student.Name[i]***} ha aprobado con {***student.Note[i]***}"); 
      } 
      else 
      { 
       Console.WriteLine($"{***student.Name[i]***} ha reprobado con {***alumno.Nota[i]***}"); 
      } 
     } 

     return Console.ReadLine(); 
    } 
} 
+0

申し訳ありませんが、星はビジュアルスタジオの赤いコード用です。 – vickry

答えて

2

生徒がリストです。注は、そのリストのRegisterオブジェクトのプロパティです。したがって、Studentsリストの特定の要素にアクセスするには、プロパティではなくインデクサーを使用する必要があります。だから、それは次のようになります。

if (Students[i].Note >= 70) 
{ 
    .... 

を同様にConsole.WriteLineを文も[i]は、単一の目的であった.nameの代わりの学生、生徒が使用する必要があります。

+0

ありがとう、ちょっとだけ、私は何をお勧めしていますか? 、それを何度も繰り返すと、あなたは新しい学生を加えるでしょう、あなたは何か考えていますか? – vickry

+0

質問をするたびに同じ生徒のインスタンスを使用しているので、リストに同じオブジェクトを何度も繰り返し追加しています。プロパティを設定すると、その同じインスタンスのプロパティを変更するだけです。毎回新しいインスタンスを作成する必要があります。したがって、var student = new Register();を移動します。あなたのwhileループの内側に。 –

+0

兄さん、あなたはすばらしいです!, thanxたくさん! – vickry

1

student.Name[i]student[i].Nameをする必要があります(黒の筆記体のテキストは私のコードでは、実際に赤です)。

if (student[i].Note >= 70) 
{ 
    Console.WriteLine($"{student[i].Name} ha aprobado con {student[i].Note}"); 
} 
else 
{ 
    Console.WriteLine($"{student[i].Name} ha reprobado con {alumno[i].Nota}"); 
} 
+0

大文字の学生は、配列として定義されている変数なので、小文字の学生は単なるインスタンスなので、同じエラーが発生します。 –

+0

あなたは正しいです。私はちょうど元のコードをコピーし、それをテストしないでください – MichaelMao

+0

私は学生が学生リストより良いと思います – MichaelMao

関連する問題