我在我的代码中使用了一个switch语句,它抛出一个硬币并生成随机结果。如果硬币落在0上,它显示尾巴,如果它落在1,它显示头部。但是当我使用switch语句时,输出总是只有“head”或“tails”和“head”两者。
我的代码:
import static java.lang.System.*;
import java.util.*;
class generateRandomNumbers{
public static void main(String[] args){
Random coin = new Random();
int toss;
toss = coin.nextInt(2);
switch(toss){
case 0 : out.println("tails");
case 1 ; out.println("heads");
}
}
}
但是,当我使用if-else语句时,它按计划运行:
import static java.lang.System.*;
import java.util.*;
class generateRandomNumbers{
public static void main(String[] args){
Random coin = new Random();
int toss;
toss = coin.nextInt(2);
if(toss == 0){
out.println("tails");
}
else{
out.println("heads");
}
}
}
答案 0 :(得分:4)
case
声明中的 switch
如果您没有终止它们(通常使用break
,return
或{{1}一个例外也会做的伎俩)。在您的情况下,当您随机生成throw
时,执行其案例,然后程序继续执行下一个案例(0
)。您可以通过在每个1
:
break
语句来解决此问题
case
中找到
答案 1 :(得分:1)
尝试添加中断
Random coin = new Random();
int toss;
toss = coin.nextInt(2);
switch(toss){
case 0 : System.out.println("tails"); break;
case 1 : System.out.println("heads"); break;
}
答案 2 :(得分:1)
虽然如下更改代码有助于:
case 0 : out.println("tails"); break;
case 1 : out.println("heads"); break;
但是对于像你这样处理的案例,我宁愿使用boolean flag
来解决我的问题。
答案 3 :(得分:0)
import static java.lang.System.*;
import java.util.*;
class generateRandomNumbers{
public static void main(String[] args){
Random coin = new Random();
int toss;
toss = coin.nextInt(2);
switch(toss){
case 0 :
out.println("tails");
break;
case 1 :
out.println("heads");
break;
}
}
}
答案 4 :(得分:0)
在第一个案例块之后需要一个break语句才能获得预期的行为。 switch语句的工作方式是不间断,控制流在匹配的情况之后执行每个语句。这将是您案例的正确代码。
import static java.lang.System.*;
import java.util.*;
class generateRandomNumbers{
public static void main(String[] args){
Random coin = new Random();
int toss;
toss = coin.nextInt(2);
switch(toss){
case 0 :
out.println("tails");
break;
case 1 ; out.println("heads");
}
}
}
在此处阅读有关switch语句在Java中的更多信息。 https://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html