C#if语句比较数字
我对编程非常陌生,必须编写一个小程序来测试一个数字是否小于或大于500、2000和5000。现在我写了这个,但它总是需要第一个else语句,即使数字大于5000,也表示数字小于500。有人知道为什么吗?感谢我得到的每一个帮助。:) 代码如下:C#if语句比较数字,c#,if-statement,numbers,comparison,C#,If Statement,Numbers,Comparison,我对编程非常陌生,必须编写一个小程序来测试一个数字是否小于或大于500、2000和5000。现在我写了这个,但它总是需要第一个else语句,即使数字大于5000,也表示数字小于500。有人知道为什么吗?感谢我得到的每一个帮助。:) 代码如下: double rebe, fuenfh = 500.00, zweit = 2000.00, fuenft = 5000.00; //zweiPro = 2.00, fuenfPro = 5.00, zehnPro = 10.00; Consol
double rebe, fuenfh = 500.00, zweit = 2000.00, fuenft = 5000.00;
//zweiPro = 2.00, fuenfPro = 5.00, zehnPro = 10.00;
Console.WriteLine("How big is the number? Wie groß war Ihr Rechnungsbetrag? ");
rebe = Console.Read();
if (rebe >= fuenfh)
{
if (rebe >= zweit)
{
if (rebe >= fuenft)
{
Console.WriteLine("bigger or same as 5000");
Console.ReadLine();
Console.Read();
}
else
{
Console.WriteLine("bigger or same as 2000 but smaller than 5000 // Groesser gleich als 2000 aber kleiner als 5000");
Console.ReadLine();
Console.Read();
}
}
else
{
Console.WriteLine("bigger or same as 500 but smaller than 2000 // Groesser gleich 500 aber kleiner als 2000");
Console.ReadLine();
Console.Read();
}
}
else
{
Console.WriteLine("smaller than 500 // Leider gibt es keinen Rabatt. :(");
Console.ReadLine();
Console.Read();
}
从
rebe=Console.Read()更改您的输入
torebe=Convert.ToDouble(Console.ReadLine())代码>。我认为您没有得到预期的值。这就是它的工作原理,将输入转换为双精度(正如mnield所暗示的),但也使代码总体上更易于阅读。请注意,当您反转条件时,代码会缩短多少
Console.WriteLine("How big is the number?");
double amount = Convert.ToDouble(Console.Readline());
if (amount < 500.0)
{
Console.WriteLine("smaller than 500");
}
else if (amount < 2000.0)
{
Console.WriteLine("bigger or same as 500 but smaller than 2000");
}
else if (amount < 5000.0)
{
Console.WriteLine("bigger or same as 2000 but smaller than 5000");
}
else
{
Console.WriteLine("bigger or same as 5000");
}
Console.ReadLine();
Console.WriteLine(“数字有多大?”);
double amount=Convert.ToDouble(Console.Readline());
如果(金额<500.0)
{
控制台写入线(“小于500”);
}
否则,如果(金额<2000.0)
{
Console.WriteLine(“大于或等于500,但小于2000”);
}
否则,如果(金额<5000.0)
{
Console.WriteLine(“大于或等于2000,但小于5000”);
}
其他的
{
Console.WriteLine(“大于或等于5000”);
}
Console.ReadLine();
这样,你将有整个功能在循环中
double.TryParse-将输入转换为双精度类型
如果(eingabe)-如果输入了数字,它会将变量发送到if块中
do{}while(true)-无休止地循环测试您的函数,而无需始终单击调试“如果一个数字小于或大于500、2000和5000”-这听起来像是3个独立的(非嵌套的)if/else
s。使用调试器逐步检查代码,并在每一步检查值。这是一段微不足道的代码,如果你打算编写程序,你需要学习调试技巧。还要注意的是,尽管它要等到你点击回车-控制台。只读返回一个单一的整数字符-因此,如果你键入5000后跟回车,那么读将返回53的整数“5”。事实上,今天是学习如何使用调试器的好日子。另外,请仔细阅读您的代码:如果您使用相同的两条语句结束一个条件语句的每个分支,那么这两条语句不是有条件执行的,因此根本不应该处于条件下。不要说出您的数字。无需为值500创建变量fuenfh
(德语中是fivehunded的缩写)。只要这个值确实没有改变,就在代码中输入数字,否则使用更通用的名称,如“threshold”。
double fuenfh = 500.00, zweit = 2000.00, fuenft = 5000.00;
//zweiPro = 2.00, fuenfPro = 5.00, zehnPro = 10.00;
do
{
Console.WriteLine("\nWie groß war Ihr Rechnungsbetrag? ");
var eingabe = double.TryParse(Console.ReadLine(), out var rebe);
if (eingabe)
{
if (rebe >= fuenft) { Console.Write($"Die eingabe ist größer oder gleich {fuenft}"); }
else if (rebe >= zweit) { Console.Write($"Die eingabe ist größer oder gleich {zweit} aber kleiner als {fuenfh}"); }
else if (rebe >= fuenfh) { Console.Write($"Die eingabe ist größer oder gleich {fuenfh} aber kleiner als {zweit}"); }
else { Console.Write($"Die eingabe ist kleiner als {fuenfh}"); }
}
else { Console.WriteLine("Bitte Zahl eingeben!"); }
} while (true);