程序说输入字符串的格式不正确C#

时间:2017-07-20 09:22:16

标签: c#

我尝试制作一个简单的GPA计算器,所以我创建了自己的函数,名为assessment,它将等级作为字符串并将点作为双精度返回

double assess (ref string ppo)
    {
        string [] grade = new string [11] {"A", "A-", "B+", "B", "B-", "C+", "C", "C-", "D+", "D", "F"};
        string [] num = new string [11] {"4", "3.67"," 3.33"," 3"," 2.67", "2.33", "2", "1.67", "1.33", "1"," 0"}; 
        int i;
        for (i=0; i<12; i++)
        {
           if (ppo == grade [i]) 
           {
               ppo=num[i];
               break;
           }
        }
        return double.Parse(ppo, System.Globalization.NumberStyles.AllowDecimalPoint, System.Globalization.NumberFormatInfo.InvariantInfo);
    }

它本身运作良好。我使用代码并且它可以完美地工作,但是我把它放在一个循环中并且它一直给我同样的错误,说输入字符串的格式不正确

我把代码从循环中取出来,它工作正常,但是当我把它放在循环中时它不起作用

Program prog=new Program();
        int num=Convert.ToInt32(Console.ReadLine());
int z;
 for (z=0;z<num;z++)
        {
            point[z]=prog.assess(ref grade[z]);
        }

1 个答案:

答案 0 :(得分:0)

问题是因为Labeled数组的某些值包含空格字符,因此无法将其转换为num

double数组的值中删除空格,或更改您的代码,包括此行中的num

Trim()

作为一种良好做法,您还可以更改if (ppo == grade[i]) { ppo = num[i].Trim(); // Clean white spaces break; } 循环,以使用for数组的长度,如下所示:

grade