1

私は C# の初心者で、現在、この問題に遭遇したときにクラスとデータ構造を試しています。char 入力を与える grade char を使用して、列挙型の説明から int 出力を取得したいと考えています。どんな助けでも大歓迎です。ありがとう

using System;
namespace dataStorageOfFiveStudents
{
     public class StudentData
     {
          public string name;
          public int rollNo;
          public char grade;
          public float gpa;
     }
    public class Program
    {
        enum grading { A=4, B=3, C=2, D=2, F=0};
        static void Main(string[] args)
        {
            //Data Entry
            StudentData student1 = new StudentData();
            Console.WriteLine("name?");
            student1.name = Console.ReadLine();
            Console.WriteLine("Roll Number?");
            student1.rollNo = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Grade");
            student1.grade = Convert.ToChar(Console.ReadLine());
            student1.gpa = (int)grading.student1.grade;
            //Output
            Console.WriteLine("Name =\t" + student1.name);
            Console.WriteLine("Roll No =\t" + student1.rollNo);
            Console.WriteLine("Grade =\t" + student1.grade);
            Console.WriteLine("GPA =\t" + student1.gpa);
            Console.ReadKey();
        }
    }
}
4

3 に答える 3

2

Enum.ParseまたはEnum.TryParseを使用する必要があります。

grading gpa;
if (Enum.TryParse(student1.grade.ToString(), true, out gpa))
{
    student1.gpa = (float)(int)gpa;
    Console.WriteLine("Name =\t" + student1.name);
    Console.WriteLine("Roll No =\t" + student1.rollNo);
    Console.WriteLine("Grade =\t" + student1.grade);
    Console.WriteLine("GPA =\t" + student1.gpa);
}
else
{
    Console.WriteLine("You entered an invalid letter grade");
}
于 2012-07-24T08:06:11.903 に答える
0

このコードで簡単にできます

student1.gpa = (int)(Enum.Parse(typeof(grading), student1.grade.ToString().ToUpper()));
于 2012-07-24T08:32:16.630 に答える
0

使用するEnum.Parse

仮定:

 public class StudenData {
     public string name { get;set; }
     public int rollNo {get;set; }
     public string grade { 
         get { return gpaEnum.ToString(); }
         set { gpaEnum = (grading)Enum.Parse(typeof(grading),value); }
     public gpaEnum { get;set; }
     public int gpa {
         get { return (int)gpaEnum; }
         set { gpaEnum=(grading)value; }
     }
 }

それで

   //Data Entry   
    StudentData student1 = new StudentData();   
    Console.WriteLine("name?");   
    student1.name = Console.ReadLine();   
    Console.WriteLine("Roll Number?");   
    student1.rollNo = Convert.ToInt32(Console.ReadLine());   
    Console.WriteLine("Grade");   
    student1.grade = Console.ReadLine();
    //Output   
    Console.WriteLine("Name =\t" + student1.name);   
    Console.WriteLine("Roll No =\t" + student1.rollNo);   
    Console.WriteLine("Grade =\t" + student1.grade);   
    Console.WriteLine("GPA =\t" + student1.gpa); 
    Console.ReadKey();   

編集---データ構造が固定されているように見えるため

public class StudenData {
     public string name { get;set; }
     public int rollNo {get;set; }
     public char grade { get;set; }
     public float gpa { get;set; }
 }

それで

   //Data Entry   
    StudentData student1 = new StudentData();   
    Console.WriteLine("name?");   
    student1.name = Console.ReadLine();   
    Console.WriteLine("Roll Number?");   
    student1.rollNo = Convert.ToInt32(Console.ReadLine());   
    Console.WriteLine("Grade");   
    grading grade = (grading)Enum.Parse(typeof(grading),Console.ReadLine());
    student1.grade = grade.ToString()[0]; // Grab first char of grade.
    student1.gpa = (float)(int)grade;
    //Output   
    Console.WriteLine("Name =\t" + student1.name);   
    Console.WriteLine("Roll No =\t" + student1.rollNo);   
    Console.WriteLine("Grade =\t" + student1.grade);   
    Console.WriteLine("GPA =\t" + student1.gpa); 
    Console.ReadKey();   

このコードにはエラー チェックがありません。失敗した解析の例外ではなく、検証チェックを追加する場合は、Enum.TryParse を使用できます。

于 2012-07-24T08:09:34.347 に答える