2017-05-03 7 views
-2

クラスstudent_details { public int studId {get;セット;アプリケーションを実行する際}新しいリストの値を保存する方法

public string FirstName { get; set; } 

    public string LastName { get; set; } 

    public string UGender { get; set; } 

    public int UAge { get; set; } 

} 

クラスプログラム {

static void Main(string[] args) 
    { 
     string studYear = ""; 
     int Id = 0; 
     //InputDetails 
     #region 
     Input: 

     Console.WriteLine("\nStudent Year Identifier\n\n"); 
     Console.WriteLine("Enter FirstName: "); 
     string Fname = Console.ReadLine(); 
     Console.WriteLine("Enter LastName: "); 
     string Lname = Console.ReadLine(); 
     Console.WriteLine("Enter Gender: "); 
     string Gender = Console.ReadLine(); 
     Console.WriteLine("Enter Age: "); 
     int Age = Convert.ToInt16(Console.ReadLine()); 
     if (Age < 14) 
     { 
      studYear = "N/A"; 
     } 
     else if (Age <= 15) 
     { 
      studYear = "FirstYear"; 
     } 
     else if (Age <= 17) 
     { 
      studYear = "SecondYear"; 
     } 
     else if (Age <= 19) 
     { 
      studYear = "ThirdYear"; 
     } 
     else if (Age >= 20) 
     { 
      studYear = "ForthYear"; 
     } 
     #endregion 


     //List 
     #region 

     List<Model.student_details> listOfstudentDetails = new List<Model.student_details>(); 
     #endregion 
     //Looping 
     #region 
     Console.WriteLine("Add more student details (Yes or No)?"); 
     string answer = Console.ReadLine(); 
     if (answer == "Yes" || answer == "YES" || answer == "yes" || answer == "y" || answer == "Y") 
     { 
      Console.Clear(); 

      listOfstudentDetails.Add(new Model.student_details { studId = Id++, FirstName = Fname, LastName = Lname, UGender = Gender, Uage = Age }); 
      goto Input; 
     } 
     else if (answer == "No" || answer == "NO" || answer == "no" || answer == "n" || answer == "N") 
     { 
      Console.Clear(); 

      listOfstudentDetails.Add(new Model.student_details { studId = Id++, FirstName = Fname, LastName = Lname, UGender = Gender, Uage = Age }); 
      //var filterName = listOfstudentDetails; 
      foreach (var item in listOfstudentDetails) 
      { 
       Console.WriteLine("Student Id = " + item.studId + ": Firstname is " + item.FirstName + " Lastname is " + item.LastName + " and Gender is " + item.UGender+ " and Age is equal to " + item.Uage + " and his age is applicable for " + studYear); 
      } 
      Console.ReadKey(); 

     } 
     #endregion 

    } 

//、プログラムは、学生の詳細情報を入力するように要求されます。学生の詳細を入力するのに制限はありません。詳細を作成した後、プログラムはユーザーに「学生の詳細を追加する(YesまたはNo)」かどうかを常に尋ねます。ユーザーが「はい」と入力すると、プログラムは次の質問を再度入力するよう求めます。 「いいえ」の場合、プログラムは、下の例のように、文字列の最後にメモがある生徒のリストを実行します。

出力:学生の詳細の 一覧:

学生ID = 1:彼のファーストネームはジョニーであり、彼の姓はブラボーです。年齢は20歳で、彼の年齢は3年目に適用されます。

学生ID = 2:彼のファーストネームはスミスであり、彼の姓はバラックです。年齢は19歳で、彼の年齢は3年目に適用されます。

学生ID = 3:彼女のファーストネームはジェニーで、彼女の姓はスイフトです。年齢は14歳で、年齢は初年度に適用されます

+1

なぜこの質問に「basic」とタグを付けましたか? –

+0

あなたは正確に何をしようとしていますか?何が問題ですか? –

+0

そして、あなたのコードには正確に何が間違っていますか?私が見ることができるのは、studYearは入力中にのみ設定されることです。だからリストを出力すると、最後の生徒の正しい値だけが表示されます... – Kempeth

答えて

1

あなたがループするたびに新しいリストで上書きしています。

Inputラベルの上にリストを定義してみてください。

+0

ありがとうございます^ _^ –

1

入力サイクルごとにリストを上書きします。あなたはあなたのリストに1人の生徒しかいない。

方法のトップにあなたの宣言と、リストの初期化を移動

static void Main(string[] args) 
{ 
    string studYear = ""; 
    int Id = 0; 
    List<Model.student_details> listOfstudentDetails = new List<Model.student_details>(); 
} 

それは一般的にその範囲の先頭にあなたの変数を宣言して初期化することをお勧めします。

また、入力サイクルを繰り返すためにgotoを使用しないでください。 whileまたはdo-whileループを採用する必要があります。

//initialize your variables 
... 

do 
{ 
    //input students 
    ... 
} while (answerWasYes); 

//list students 
... 

あなたのgoto構造は、プログラムの流れをより厳しくするため、この問題の主な原因です。

+0

私は入力した最後のリストを表示します。 1行のみ。 –

+0

'new List ()'を書く行はループ/ gotoラベルの前にある必要があります – Kempeth

+0

それは働くので感謝します。ご協力ありがとうございました –

関連する問題