我有一个家庭作业,我应该创建一个代码,让用户输入一个十进制数,然后询问用户希望将该数字四舍五入到的小数。家庭作业是给我们的,只有很少的指导,如何做到这一点,所以我们应该在网上看。我们得到了关于Math.Round()的提示,这是我现在的代码:
Console.WriteLine("Hej! Skriv in ett tal med decimaler.");
string strTal = Console.ReadLine();
double tal = Convert.ToDouble(strTal);
Console.WriteLine("Tack! Skriv nu in hur många decimaler du
vill ha med på ditt tal.");
string strAvrundaren = Console.ReadLine();
int avrundaren = Convert.ToInt32(strAvrundaren);
Console.WriteLine("Ditt tal är: " +
Math.Round(tal,avrundaren));
使用这段代码,我得到它的工作,以便每当用户写入一个十进制数,然后写入x的小数,它应该四舍五入到它正确。我的问题是,如果有人要输入一个负十进制数字(例如:-1,-2,-2,12313等等)我有想法?我尝试过,当我这样做时,我的代码崩溃了。现在我来找你们解释为什么会这样做。
编辑:说它“崩溃”,每当我在终端写一个负数时,窗口弹出到我的侧边栏,当我把它恢复时,终端上没有发生任何事情,我可以像我一样写想在终端但没有任何反应。如果有帮助,我在Visual Studio for Mac上。最诚挚的问候 KIAN
答案 0 :(得分:1)
您的程序缺少输入验证。负数不仅会导致它崩溃,而且任何非数字的字符串也会导致未处理的异常。
通常,程序在尝试使用它们之前应验证其输入。如果该值无效,您可以要求用户再次输入。例如:
using System;
public class Program
{
public static void Main()
{
double tal;
while (true)
{
Console.WriteLine("Hej! Skriv in ett tal med decimaler.");
string strTal = Console.ReadLine();
var ok = double.TryParse(strTal, out tal);
if (ok) break;
}
int avrundaren;
while (true)
{
Console.WriteLine("Tack! Skriv nu in hur många decimaler du vill ha med på ditt tal.");
string strAvrundaren = Console.ReadLine();
var ok = int.TryParse(strAvrundaren, out avrundaren);
if (!ok) continue;
if (avrundaren < 0) continue;
break;
}
Console.WriteLine("Ditt tal är: " + Math.Round(tal,avrundaren));
}
}
上试用
答案 1 :(得分:1)