C# 试一试
1) 在try and catch之后,我想再次循环它以给出新的数字(“Console.ReadLine(“给出正确的数字”),因为用户并没有输入可转换为double的字符串 2第二个问题是,当用户给出错误的号码时,我想再次循环输入新号码。这个版本的程序给小号码或大号码发送消息并退出 纠正C# 试一试,c#,C#,1) 在try and catch之后,我想再次循环它以给出新的数字(“Console.ReadLine(“给出正确的数字”),因为用户并没有输入可转换为double的字符串 2第二个问题是,当用户给出错误的号码时,我想再次循环输入新号码。这个版本的程序给小号码或大号码发送消息并退出 纠正 double number=10,11; Console.WriteLine("Give a number"); string w=Console.ReadLine(); try { double d = C
double number=10,11;
Console.WriteLine("Give a number");
string w=Console.ReadLine();
try
{
double d = Convert.ToDouble(w);
}
catch(FormatException)
{
Console.WriteLine("it is not a number");
}
double dd=Convert.ToDouble(w);
if (dd == number)
{
Console.WriteLine("Yes, it is!");
}
else if (number<dd)
{
Console.WriteLine("to big number");
}
else if(number>dd)
{
Console.WriteLine("to small number");
}
Console.ReadLine();
double number=10,11;
Console.WriteLine(“给出一个数字”);
字符串w=Console.ReadLine();
尝试
{
双d=转换为双(w);
}
捕获(格式化异常)
{
Console.WriteLine(“它不是一个数字”);
}
双dd=转换为双(w);
如果(dd==数字)
{
控制台。WriteLine(“是的,它是!”);
}
否则,如果(编号d)
{
控制台。写入线(“到小数字”);
}
Console.ReadLine();
首先,使用do..while(条件)
不断询问,直到用户输入有效数字。其次,使用TryParse
检查值是否有效。这比异常处理和转换两次要好。不确定为什么要使用double
s,但int
s可能更合适
bool valid = false;
do
{
bool newValidState;
Console.WriteLine("Give a number");
string w = Console.ReadLine();
double d;
if (!double.TryParse(w, out d))
{
Console.WriteLine("it is not a number");
newValidState = false;
}
else if (d == number)
{
Console.WriteLine("Yes, it is!");
newValidState = true;
}
else if (wyliczona < wybor) // these conditions seem unrelated to `d`
// are they okay?
{
Console.WriteLine("to big number");
newValidState = false;
}
else if(wyliczona > wybor)
{
Console.WriteLine("to small number");
newValidState = false;
}
else
{
Console.WriteLine("unknown condition. needs work.");
newValidState = false;
}
valid = newValidState;
}
while (!valid);
bool valid=false;
做
{
布尔纽瓦利斯特;
Console.WriteLine(“给出一个数字”);
字符串w=Console.ReadLine();
双d;
如果(!double.TryParse(w,out d))
{
Console.WriteLine(“它不是一个数字”);
newValidState=false;
}
else if(d==数字)
{
控制台。WriteLine(“是的,它是!”);
newValidState=true;
}
else if(wyliczonawybor)
{
控制台。写入线(“到小数字”);
newValidState=false;
}
其他的
{
Console.WriteLine(“未知条件。需要工作”);
newValidState=false;
}
valid=newValidState;
}
而(!有效);
请注意使用
newValidState
,这将确保始终为valid
分配一个新值。这有助于防止由于从不设置值而产生无休止的循环。除非每个分支都将newValidState
设置为一个值,否则代码不会编译。首先,使用do..while(条件)
不断询问,直到用户输入有效数字。其次,使用TryParse
检查值是否有效。这比异常处理和两次转换要好。不确定为什么要使用double
s,但int
s可能更合适
bool valid = false;
do
{
bool newValidState;
Console.WriteLine("Give a number");
string w = Console.ReadLine();
double d;
if (!double.TryParse(w, out d))
{
Console.WriteLine("it is not a number");
newValidState = false;
}
else if (d == number)
{
Console.WriteLine("Yes, it is!");
newValidState = true;
}
else if (wyliczona < wybor) // these conditions seem unrelated to `d`
// are they okay?
{
Console.WriteLine("to big number");
newValidState = false;
}
else if(wyliczona > wybor)
{
Console.WriteLine("to small number");
newValidState = false;
}
else
{
Console.WriteLine("unknown condition. needs work.");
newValidState = false;
}
valid = newValidState;
}
while (!valid);
bool valid=false;
做
{
布尔纽瓦利斯特;
Console.WriteLine(“给出一个数字”);
字符串w=Console.ReadLine();
双d;
如果(!double.TryParse(w,out d))
{
Console.WriteLine(“它不是一个数字”);
newValidState=false;
}
else if(d==数字)
{
控制台。WriteLine(“是的,它是!”);
newValidState=true;
}
else if(wyliczonawybor)
{
控制台。写入线(“到小数字”);
newValidState=false;
}
其他的
{
Console.WriteLine(“未知条件。需要工作”);
newValidState=false;
}
valid=newValidState;
}
而(!有效);
请注意使用newValidState
,这将确保您始终为valid
分配一个新值。这有助于防止由于从不设置值而产生无休止的循环。除非每个分支都将newValidState
设置为一个值,否则代码不会编译。尝试以下方法:
var number =3;
do{
Console.WriteLine("Give a number");
string w=Console.ReadLine();
try
{
double d = Convert.ToDouble(w);
}
catch(FormatException)
{
Console.WriteLine("it is not a number");
continue; // not a number starting new iteration of the loop
}
double dd=Convert.ToDouble(w);
if (dd == number)
{
Console.WriteLine("Yes, it is!");
break; // The number guessed exiting loop
}
else if (dd>number)
{
Console.WriteLine("to big number");
}
else if(dd<number)
{
Console.WriteLine("to small number");
}
}
while (true);
Console.ReadLine();
var数=3;
做{
Console.WriteLine(“给出一个数字”);
字符串w=Console.ReadLine();
尝试
{
双d=转换为双(w);
}
捕获(格式化异常)
{
Console.WriteLine(“它不是一个数字”);
continue;//不是开始循环新迭代的数字
}
双dd=转换为双(w);
如果(dd==数字)
{
控制台。WriteLine(“是的,它是!”);
break;//在退出循环时猜测的数字
}
否则,如果(dd>编号)
{
控制台。写入线(“到大数字”);
}
否则如果(dd试试这个:
var number =3;
do{
Console.WriteLine("Give a number");
string w=Console.ReadLine();
try
{
double d = Convert.ToDouble(w);
}
catch(FormatException)
{
Console.WriteLine("it is not a number");
continue; // not a number starting new iteration of the loop
}
double dd=Convert.ToDouble(w);
if (dd == number)
{
Console.WriteLine("Yes, it is!");
break; // The number guessed exiting loop
}
else if (dd>number)
{
Console.WriteLine("to big number");
}
else if(dd<number)
{
Console.WriteLine("to small number");
}
}
while (true);
Console.ReadLine();
var数=3;
做{
Console.WriteLine(“给出一个数字”);
字符串w=Console.ReadLine();
尝试
{
双d=转换为双(w);
}
捕获(格式化异常)
{
Console.WriteLine(“它不是一个数字”);
continue;//不是开始循环新迭代的数字
}
双dd=转换为双(w);
如果(dd==数字)
{
控制台。WriteLine(“是的,它是!”);
break;//在退出循环时猜测的数字
}
否则,如果(dd>编号)
{
控制台。写入线(“到大数字”);
}
else if(dd)从不使用while(true)
这是邪恶的!@PatrickHofman,即使在这个例子中?如果它允许你提供更紧凑、更不容易出错的代码,那么就可以使用它。是的。向新开发人员学习这种反模式是很糟糕的。@PatrickHofman这是非常有争议的。KISS原则说解决方案不会过于复杂。因此,你不明白为什么要“禁止”它“使用while(true)
我猜您永远不必调试CPU负载为100%的正在运行的生产服务器,因为某些意外情况使其永远运行…永远不使用while(true)
这是邪恶的!@PatrickHofman,即使在这个例子中?如果它允许你提供更紧凑、更不容易出错的代码,那么就可以使用它。是的。向新开发人员学习这种反模式是很糟糕的。@PatrickHofman这是非常有争议的。KISS原则说解决方案不会过于复杂。因此,你不明白为什么要“禁止”它使用while(true)
我想您永远不必调试一个运行中的生产服务器,因为它有100%的CPU负载,因为一些意外的错误