在搜索和搜索之后我无法弄清楚(你知道它是怎么回事)为什么这段代码不起作用。
我只是想让它像这样工作
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);
}
答案 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# Documentation,Console.ReadLine
执行以下操作
从标准输入流中读取下一行字符。
这意味着每次拨打Console.ReadLine
时,都会从控制台读取新行。从我在代码中看到的内容来看,这不是您想要的行为。要解决您的问题,您应该将Console.ReadLine
的结果存储在变量中,并使用该变量而不是ReadLine方法。