C# 之后做。。。while循环未处理的异常:System.FormatException:输入字符串的格式不正确

C# 之后做。。。while循环未处理的异常:System.FormatException:输入字符串的格式不正确,c#,C#,所以我的实验室应该问你想要多少个问题,然后给你那么多随机生成的数学题。在结束时,它应该问你是否想再问一组问题,或者你可以选择回答y或n。当我停止代码时,一切正常,但我还需要得到正确的打印总量,当我添加代码时,我得到未处理的异常。我的问题来自括号前的最后三行: using System; class MainClass { public static void Main (string[] args) { var rnd = new Random(); string

所以我的实验室应该问你想要多少个问题,然后给你那么多随机生成的数学题。在结束时,它应该问你是否想再问一组问题,或者你可以选择回答y或n。当我停止代码时,一切正常,但我还需要得到正确的打印总量,当我添加代码时,我得到未处理的异常。我的问题来自括号前的最后三行:

    using System;

class MainClass {
  public static void Main (string[] args) {
    var rnd = new Random();
    string exit = "";
    double score = 0;
    double total = 0; 
    double percent = 0;
    Console.WriteLine("How many problems do you want in a set?");
    double problem = Convert.ToDouble(Console.ReadLine());
    do{
    for(double i = 1; i<=problem; i++){
      double num1 = rnd.Next(1,9);
      double num2 = rnd.Next(1,9);

      Console.Write("Problem {0} : {1}*{2}=? ", i, num1, num2);
      double answer = Convert.ToDouble(Console.ReadLine());

      if(num1*num2 == answer){
        score++;
      }//end if

      total++;
      }
      Console.Write("Another set? <y/n>");
      exit = Console.ReadLine();
      Console.ReadLine();
    }while(exit!="n");
      percent = score/total;
      Console.WriteLine(" {} correct out of {} is a {}%",score,total,percent);
      Console.WriteLine("done");
  }//end main
}//end class
使用系统;
类主类{
公共静态void Main(字符串[]args){
var rnd=新随机数();
字符串exit=“”;
双倍得分=0;
双倍合计=0;
百分之二=0;
WriteLine(“您希望一组中有多少个问题?”);
双重问题=Convert.ToDouble(Console.ReadLine());
做{

对于(double i=1;i对参数{0}、{1}、{2}进行编号,或者现在可以使用字符串插值,如下所示:

Console.WriteLine($"{score} correct out of {total} is a {percent}%");

需要的0、1和2

这里还有一些测试供您使用。当此行执行时:
double problem=Convert.ToDouble(Console.ReadLine());
,输入“十”。一般来说,您应该期望用户不会按照您希望的方式进行操作。因此:
Convert.ToDouble
double.Parse
是解析用户输入(以及
int
s等的类似函数)的糟糕选择。请阅读
double.TryParse
(和
int.TryParse
)等。)你也可以考虑把提示放在一个单独的函数中。当你问“另一组”时会发生什么,有人回答“否”(或者甚至是“N”)?这能回答你的问题吗?哦,谢谢!我盯着它太难了,忘记把数字放进去了。
      Console.WriteLine(" {} correct out of {} is a {}%",score,total,percent);