Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果用户意外地输入了B、C、D或F以外的字母,我想不出一种方法会给出错误消息_C#_Visual Studio 2012 - Fatal编程技术网

C# 如果用户意外地输入了B、C、D或F以外的字母,我想不出一种方法会给出错误消息

C# 如果用户意外地输入了B、C、D或F以外的字母,我想不出一种方法会给出错误消息,c#,visual-studio-2012,C#,Visual Studio 2012,--我尝试了一个默认情况,并尝试了另一个if语句,但无法使其正常工作。如果用户键入的字母不是a B C D F,请尝试以下操作,我只需要它说“错误,无效输入”: using System; namespace gpa { class gpa { static void Main(string [] args) { double credit = 0;

--我尝试了一个默认情况,并尝试了另一个
if
语句,但无法使其正常工作。如果用户键入的字母不是
a B C D F

请尝试以下操作,我只需要它说“错误,无效输入”:

using System;

    namespace gpa
    {
        class gpa
        {
            static void Main(string [] args)
            {
                double credit = 0;
                double totalCreditHours = 0;

            char grade = ' ';
            double gradePoints = 0;
            double totalGradePoints = 0;

            int counter = 0;
            double gpa = 0;

            do 
            {
                Console.Write("Enter letter grade for class #{0} \n(use A, B, C, or D. Type 0 after all classes entered.): ", counter += 1);
                char userInput = char.Parse(Console.ReadLine());

                if (userInput == '0')
                {
                    break;
                }

                else 
                {
                    grade = userInput;
                    Console.Write("Enter your credit hours: ");
                    credit = int.Parse(Console.ReadLine());

                    switch (grade)
                    {
                        case 'A': gradePoints = 4;
                            break;
                        case 'B': gradePoints = 3;
                            break;
                        case 'C': gradePoints = 2;
                            break;
                        case 'D': gradePoints = 1;
                            break;

                    }

                    totalGradePoints = totalGradePoints + (credit * gradePoints);
                    totalCreditHours = totalCreditHours + credit;

                } 

            } while (grade != 0);

                gpa = CalculateGPA(totalGradePoints, totalCreditHours);
                Console.Write("Your GPA is ", gpa);

                Console.ReadKey();
            }


            static double CalculateGPA(double totalGradePoints, double totalCreditHours)
            {
                return (totalGradePoints / totalCreditHours);

            }
        }
    }

您可以过滤字母等级输入,如果您不喜欢,则要求另一封字母:

do 
{
   Console.Write("Enter letter grade for class #{0} \n(use A, B, C, or D. Type 0 after all classes entered.): ", counter += 1);
                char userInput = char.Parse(Console.ReadLine());

                if (userInput == '0')
                {
                    break;
                }

                else 
                {
                    grade = userInput;
                    Console.Write("Enter your credit hours: ");
                    credit = int.Parse(Console.ReadLine());
                    bool throwErrorMsg = false;
                    switch (grade)
                    {
                        case 'A': gradePoints = 4;
                            break;
                        case 'B': gradePoints = 3;
                            break;
                        case 'C': gradePoints = 2;
                            break;
                        case 'D': gradePoints = 1;
                            break;
                        default: throwErrorMsg = true;
                            break;
                    }
                    if (throwErrorMsg)
                    {
                        Console.Write("Error...");
                        break;
                    }
                    totalGradePoints = totalGradePoints + (credit * gradePoints);
                    totalCreditHours = totalCreditHours + credit;

                } 

            } while (grade != 0);

您不能将默认情况设置为Console.WriteLine(“错误,无效输入”);返回0;我认为首先存在
do而
循环是有目的的。尝试更改while条件以检查用户是否输入了错误的值。此外,将默认情况下的case设置为having
Console.WriteLine(“Error,invalid input!”)这也不起作用,我有一个错误--“控制不能从一个案例标签上掉下来”
Console.Write("Enter letter grade for class #{0} \n(use A, B, C, or D. Type 0 after all classes entered.): ", counter += 1);
char userInput = char.Parse(Console.ReadLine());
if ( !"ABCDF".ToCharArray().Contains(userInput) )
{
Console.WriteLine("Enter valid letter" ); 
continue; // Start's the do loop over 
}
// You now have a good letter, A, B, ...