Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 试一试_C# - Fatal编程技术网

C# 试一试

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

1) 在try and catch之后,我想再次循环它以给出新的数字(“Console.ReadLine(“给出正确的数字”),因为用户并没有输入可转换为double的字符串 2第二个问题是,当用户给出错误的号码时,我想再次循环输入新号码。这个版本的程序给小号码或大号码发送消息并退出

纠正

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负载,因为一些意外的错误