如果(整数Console.Readline“”或null)不起作用

时间:2018-06-07 18:28:58

标签: c#

在搜索和搜索之后我无法弄清楚(你知道它是怎么回事)为什么这段代码不起作用。

我只是想让它像这样工作

if (Nummer == "") {
    Console.WriteLine("0");
}

就是这样,它不起作用。我一直在寻找一个半小时。无法理解为什么有一个简单的基本解释。我只找到了如何使用字符串或其他东西修复它,然后我尝试转换它仍然无法正常工作。有人能帮帮我吗?

感谢您对我有限的知识的耐心。谢谢你的时间

static void Main(string[] args)
{
    bool herhaal = true;

    do
    {                
        Console.Write("Geef een getal : ");
        int Nummer = Convert.ToInt16(Console.ReadLine());           

        if (Console.ReadLine() == "" && Console.ReadLine() == null)
        {
            Console.WriteLine("0");
        }

        double kw = Math.Pow(Nummer, 2);

        Console.WriteLine("Kwadraat van {0} is: {1}", Nummer, kw + Environment.NewLine);
    } while (herhaal);
}

3 个答案:

答案 0 :(得分:2)

static void Main(string[] args)
{
    int Nummer;
    bool herhaal = true;
    do
    {                
        Console.Write("Geef een getal : ");          
        //only read from the Console ONCE per loop iteration, and always read to a string first
        string input = Console.ReadLine(); 

        //TryParse better than Convert for converting strings to integers
        if (!int.TryParse(input, out Nummer))        
        {
            Console.WriteLine("0");
        }
        else  //only do the second part if the conversion worked
        {
            double kw = Math.Pow(Nummer, 2);
            Console.WriteLine("Kwadraat van {0} is: {1}\n", Nummer, kw);
        }

    } while (herhaal);
}

要从WinForms应用程序执行此操作,请在注释中尝试:

private void button1_Click(object sender, EventArgs e)
{
    double aantalgroep;
    if (!double.TryParse(textBox1.Text, out aantalgroep))        
    {
        textBox1.Text = "0";
    }
    else 
    {
        double kw = Math.Pow(aantalgroep, 2);
        textBox1.Text = String.Format("Kwadraat van {0} is: {1}", aantalgroep, kw);
    }
}

答案 1 :(得分:1)

Console.ReadLine()方法'读取'一行用户输入,并存储在您为其分配的任何变量中。这是more info

因此,您的以下代码行会在Nummer中读取您输入和存储的数字。

int Nummer = Convert.ToInt16(Console.ReadLine());           

但接下来你继续在Console.ReadLine()语句中再做两次if方法调用,那么if语句真正做的是尝试再次从控制台读取两次,并查看第一次阅读是"" ,如果第二次阅读是null,这不是您想要的行为。

您想要做的就是阅读一次,并比较您阅读的内容。按照你的代码看起来你想要输出用户输入的数字的平方,所以你可能应该检查的不仅仅是Nummer == "",因为如果用户输入了字母字符,那么这也会导致一个错误。因此,使用int.TryPrase()对您来说是更好的选择。

static void Main(string[] args)
{
    bool herhaal = true;
    do
    {
        Console.Write("Geef een getal : ");
        string Nummer = Console.ReadLine();

        if (int.TryParse(Nummer, out int result))
        {
            double kw = Math.Pow(result, 2);
            Console.WriteLine("Kwadraat van {0} is: {1}", Nummer, kw + Environment.NewLine);
            herhaal = false;
        }
        else
        {
            Console.WriteLine("0");
        }

    } while (herhaal);

    Console.ReadLine();
}

答案 2 :(得分:0)

According to the C# DocumentationConsole.ReadLine执行以下操作

  

从标准输入流中读取下一行字符。

这意味着每次拨打Console.ReadLine时,都会从控制台读取新行。从我在代码中看到的内容来看,这不是您想要的行为。要解决您的问题,您应该将Console.ReadLine的结果存储在变量中,并使用该变量而不是ReadLine方法。