C# 如果(Integer Console.Readline”或null)不';行不通

C# 如果(Integer Console.Readline”或null)不';行不通,c#,C#,我无法理解在搜索和搜索之后(你知道它是如何运行的)为什么这个代码不起作用 我只是想让它像这样工作 if (Nummer == "") { Console.WriteLine("0"); } 就这样,它不起作用了。我已经找了一个半小时了。我不明白为什么会有一个简单的基本解释。我只找到了如何用字符串或其他东西来修复它,然后我尝试转换它,但仍然无法工作。有人能帮我吗 我感谢你对我有限的知识的耐心。谢谢你的时间 static void Main(string[] args) { boo

我无法理解在搜索和搜索之后(你知道它是如何运行的)为什么这个代码不起作用

我只是想让它像这样工作

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);
}
要从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);
    }
}
要从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);
    }
}
Console.ReadLine
执行以下操作

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

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

Console.ReadLine
执行以下操作

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

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

Console.ReadLine()方法“读取”一行用户输入,并存储在您分配给它的变量中。给你

因此,下面的代码行读取您输入并存储在
numer
中的数字

int Nummer = Convert.ToInt16(Console.ReadLine());           
但是,接下来您要在
if
语句中再执行两次
Console.ReadLine()
方法调用,因此
if
语句真正做的是尝试从控制台再读取两次,看看第一次读取是否为
,第二次读取是否为
null
,这不是你想要的行为

你想做的是读一次,然后比较你读的东西。按代码看,您似乎希望输出用户输入的数字的平方,因此您可能应该检查的不仅仅是
numer==“”
,因为如果用户输入字母字符,也会导致错误。因此,使用
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();
}
Console.ReadLine()
方法“读取”一行用户输入,并存储在您分配给它的变量中。给你

因此,下面的代码行读取您输入并存储在
numer
中的数字

int Nummer = Convert.ToInt16(Console.ReadLine());           
但是,接下来您要在
if
语句中再执行两次
Console.ReadLine()
方法调用,因此
if
语句真正做的是尝试从控制台再读取两次,看看第一次读取是否为
,第二次读取是否为
null
,这不是你想要的行为

你想做的是读一次,然后比较你读的东西。按代码看,您似乎希望输出用户输入的数字的平方,因此您可能应该检查的不仅仅是
numer==“”
,因为如果用户输入字母字符,也会导致错误。因此,使用
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();
}

您正在调用
ReadLine()
三次。这读起来有三行。不确定,但您可能想尝试的是
if(String.IsNullOrEmpty(numer)){Console.WriteLine(“0”);}
和@SLaks是正确的,这也可能会导致您的问题。为什么不把
我只想让它像这样工作到实际的代码中呢?您正在调用
ReadLine()
三次。这是三行。不确定,但您可能想尝试的是
如果(String.IsNullOrEmpty(numer)){Console.WriteLine(“0”)}
和@SLaks是正确的,这也可能会导致您的问题。为什么不把
我只想让它像这样工作到您的实际代码中呢?非常感谢。如果我不在控制台中,只是在表单应用程序中,语法是否相同?因为我现在正忙于
aantalgroep=double.Parse(textBox1.Text);如果(aantalgroep==null){textBox1.Text=“0”}
因为这不起作用,我将尝试您在这里对我的其他代码所做的操作。这与我的代码不完全相同。在表单应用程序中,没有
控制台
对象,而且在(true)
循环时也不会编写
。相反,您有一个带有
click
事件处理程序的按钮,还有一个文本框,您可以在其中检查
Text
属性。此外,像
int
double
这样的基本类型永远不会为空。您仍然应该使用
TryParse()
,就像我在这个答案中显示的那样,并检查该函数的结果。非常感谢。如果我不在控制台中,只是在表单应用程序中,语法是否相同?因为我现在正忙于
aantalgroep=double.Parse(textBox1.Text);如果(aantalgroep==null){textBox1.Text=“0”}
因为这不起作用,我将尝试您在这里对我的其他代码所做的操作。这与我的代码不完全相同。在表单应用程序中,没有
控制台
对象,而且在(true)
循环时也不会编写
。相反,您有一个带有
click
事件处理程序的按钮,还有一个文本框,您可以在其中检查
Text
属性。此外,像
int
double
这样的基本类型永远不会出现