【问题标题】:CS0029 when reading user input [closed]读取用户输入时的 CS0029 [关闭]
【发布时间】:2020-08-23 18:59:12
【问题描述】:

我正在尝试编写一个计算器,但出现错误 CS0029。 这是代码:

using System;

namespace Calculator
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Calculator\n");

            Rechnungplus();
        }

        static void Rechnungplus()
        {
            Console.WriteLine("after typing a/(every) number press enter.");
            double a = Console.ReadLine();
            double b = Console.ReadLine();
            double c = a + b;
            Console.WriteLine($"\n{a} + {b} = {c}");
        }
    }
}

我搜索了一个解决方案,但我发现了一个有类似问题的人提出的问题。有人说他/她应该尝试:

double a = (Console.ReadLine());

但这没有用。

【问题讨论】:

标签: c# compiler-errors


【解决方案1】:

Console.ReadLine 返回 string,而不是 double ,所以你需要 将其转换为一个。选项之一是:

double a = double.Parse(Console.ReadLine());

但是,如果无法解析字符串,则会抛出异常。更安全的方法是使用Double.TryParse,如果转换成功,它会返回一个布尔标记。例如:

double a;
while(!double.TryParse(Console.ReadLine(), out a))
{
    Console.WriteLine("Please enter a number:");
}

【讨论】:

    【解决方案2】:

    Console.Readline() 返回一个字符串。如果你想要一个double,你必须解析它。例如:

    double a = Double.Parse(Console.Readline());
    double b = Double.Parse(Console.Readline());
    

    【讨论】:

      【解决方案3】:

      Console.ReadLine 返回一个string。它不能直接转换为double。您应该使用double.Parse(),它可以将string 解析为double。一个例子:

      double d = double.Parse(Console.ReadLine());
      

      请注意,double.Parsethrow an exception 传递给它一个无效值。更安全的选择是double.TryParse

      【讨论】:

        【解决方案4】:

        Console.Readline() 方法返回字符串。您必须将其转换为双精度才能启动程序。

        这样做:

        double a = Convert.ToDouble(Console.ReadLine())
        double b = Convert.ToDouble(Console.ReadLine())
        

        或者更好。

        static void Rechnungplus()
        {
            string temp;
            bool isValid;
            double a = 0, b = 0, c = 0;
            Console.WriteLine("after typing a/(every) number press enter.");
        
            isValid = false;
            while (!isValid)
            {
                temp = Console.ReadLine();
                if(double.TryParse(temp,out a))
                {
                    isValid = true;
                }
                else
                {
                    Console.WriteLine("Invalid input. Only (decimal) numbers are allowed.");
                }
            }
        
            isValid = false;
            while (!isValid)
            {
                temp = Console.ReadLine();
                if (double.TryParse(temp, out b))
                {
                    isValid = true;
                }
                else
                {
                    Console.WriteLine("Invalid input. Only (decimal) numbers are allowed.");
                }
            }
        
            c = a + b;
        
            Console.WriteLine($"\n{a} + {b} = {c}");
        }
        

        【讨论】:

          猜你喜欢
          • 2013-10-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多