C# 使用switch语句而不是if
所以我刚开始编程,从c开始。在我正在读的书(学习c#3.0)中,其中一个练习是这样的 练习5-2。创建一个程序,提示用户输入,接受整数,然后 评估该输入是否为零、奇数或偶数、10的倍数或太大(更多) 通过使用多个级别的if语句 我设法做到了这一点,但下一个练习是 练习5-3。重写练习5-2中的程序以执行相同的操作 使用switch语句 我理解switch语句是如何工作的,但是,我不确定如何计算用户输入的数字是否为奇数/偶数、10的倍数等等,并且不使用if语句。谢谢您的帮助。您可以这样做:C# 使用switch语句而不是if,c#,if-statement,switch-statement,C#,If Statement,Switch Statement,所以我刚开始编程,从c开始。在我正在读的书(学习c#3.0)中,其中一个练习是这样的 练习5-2。创建一个程序,提示用户输入,接受整数,然后 评估该输入是否为零、奇数或偶数、10的倍数或太大(更多) 通过使用多个级别的if语句 我设法做到了这一点,但下一个练习是 练习5-3。重写练习5-2中的程序以执行相同的操作 使用switch语句 我理解switch语句是如何工作的,但是,我不确定如何计算用户输入的数字是否为奇数/偶数、10的倍数等等,并且不使用if语句。谢谢您的帮助。您可以这样做: int
int input = ...
switch (input)
{
case 0:
Console.WriteLine("Zero");
default;
default:
switch (input < 100)
{
case true:
switch (Math.Abs(input) % 10)
{
case 0:
Console.WriteLine("Multiple of 10");
break;
case 2:
case 4:
case 6:
case 8:
Console.WriteLine("Even");
break;
default:
Console.WriteLine("Odd");
break;
}
break;
default:
Console.WriteLine("Too large");
break;
}
break;
}
int输入=。。。
开关(输入)
{
案例0:
控制台写入线(“零”);
违约
违约:
开关(输入<100)
{
大小写正确:
开关(数学Abs(输入)%10)
{
案例0:
控制台写入线(“10的倍数”);
打破
案例2:
案例4:
案例6:
案例8:
控制台。写线(“偶数”);
打破
违约:
控制台。写入线(“奇数”);
打破
}
打破
违约:
控制台。WriteLine(“太大”);
打破
}
打破
}
我不认为用C语言中的一个开关就可以做到这一点,除非你把它做得太大,以至于从0到100的每一个数字都能计算出来。您可能可以使用一个类似于C#开关的单键来执行此操作,但其语义明显不同。您可以执行以下操作:
int input = ...
switch (input)
{
case 0:
Console.WriteLine("Zero");
default;
default:
switch (input < 100)
{
case true:
switch (Math.Abs(input) % 10)
{
case 0:
Console.WriteLine("Multiple of 10");
break;
case 2:
case 4:
case 6:
case 8:
Console.WriteLine("Even");
break;
default:
Console.WriteLine("Odd");
break;
}
break;
default:
Console.WriteLine("Too large");
break;
}
break;
}
int输入=。。。
开关(输入)
{
案例0:
控制台写入线(“零”);
违约
违约:
开关(输入<100)
{
大小写正确:
开关(数学Abs(输入)%10)
{
案例0:
控制台写入线(“10的倍数”);
打破
案例2:
案例4:
案例6:
案例8:
控制台。写线(“偶数”);
打破
违约:
控制台。写入线(“奇数”);
打破
}
打破
违约:
控制台。WriteLine(“太大”);
打破
}
打破
}
我不认为用C语言中的一个开关就可以做到这一点,除非你把它做得太大,以至于从0到100的每一个数字都能计算出来。你可能可以用一个单键来实现,它类似于C#开关,但语义有很大的不同。你能告诉我们你尝试了什么吗???一个打开布尔值的开关,以及大小写true和false。这是一个链接。我能理解你的问题。这似乎是个糟糕的练习。它似乎不适合开关
语句。当然@BenjaminGruenbaum是正确的,如果(b){…}或者{…}
可以被重写成开关(b){case-true:…;break;default:…;break;}
,但是这不是一个实际的用法。您可以通过打开num%10
,将“奇数或偶数”和“10的倍数”放在一起,假设您确保数字不是负数,但我认为这也不是一个实际的用途。@JeppeStigNielsen完全正确。您能告诉我们您尝试了什么吗???一个打开布尔值的开关,一个是真的,一个是假的。这里有一个链接。我能理解你的问题。这似乎是个糟糕的练习。它似乎不适合开关
语句。当然@BenjaminGruenbaum是正确的,如果(b){…}或者{…}
可以被重写成开关(b){case-true:…;break;default:…;break;}
,但是这不是一个实际的用法。您可以通过打开num%10
,将“奇数或偶数”和“10的倍数”放在一起,假设您确保数字不是负数,但我认为这也不是一个实际的用法。@JeppeStigNielsen完全正确。这不应该在生产代码中使用,但做得很好:)输入==0呢?同时,也要尽量尊重条件的顺序given@TGO谢谢,我忘了零号的案子了。虽然我认为你不能完全按照给定的顺序处理这些条件。你必须先检查<100,然后再检查它是否可以被10或2整除。@p.s.w.g不管怎样,正如杰普·斯蒂格·尼尔森在问题中所评论的那样,这个练习本身是不好的formed@TGO同意。这根本不是我在任何现实情况下都会写的那种代码。还有更多相关的情况可以合法地应用开关。这在生产代码中永远不应该使用,但做得很好:)输入==0呢?同时,也要尽量尊重条件的顺序given@TGO谢谢,我忘了零号的案子了。虽然我认为你不能完全按照给定的顺序处理这些条件。你必须先检查<100,然后再检查它是否可以被10或2整除。@p.s.w.g不管怎样,正如杰普·斯蒂格·尼尔森在问题中所评论的那样,这个练习本身是不好的formed@TGO同意。这根本不是我在任何现实情况下都会写的那种代码。还有更多的相关案例可以合法地应用开关。