java中生成随机数的switch语句:不工作

java中生成随机数的switch语句:不工作,java,if-statement,random,switch-statement,Java,If Statement,Random,Switch Statement,我在代码中使用了一个switch语句,它掷硬币并生成一个随机结果。如果硬币落在0上,它显示尾巴,如果落在1上,它显示正面。但是当我使用switch语句时,输出总是要么只是“head”,要么同时是“tails”和“heads” 我的代码: import static java.lang.System.*; import java.util.*; class generateRandomNumbers{ public static void main(String[] args){

我在代码中使用了一个switch语句,它掷硬币并生成一个随机结果。如果硬币落在0上,它显示尾巴,如果落在1上,它显示正面。但是当我使用switch语句时,输出总是要么只是“head”,要么同时是“tails”和“heads”

我的代码:

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");
        }
    }
}
尝试添加中断

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;
}

如果您不终止
switch
语句中的
case
将失效(通常使用
中断
,但是
返回
ing或
抛出
异常也会起作用)。在您的情况下,当您随机生成
0
时,将执行其大小写,然后程序将继续执行下一个大小写(
1
)。您可以通过在每个
大小写的末尾添加
break
语句来解决此问题:

switch(toss){
    case 0 : 
        out.println("tails");
        break; // Here
    case 1 :
        out.println("heads");
        break; // And here
}

其他信息可在中找到。

,但按以下方式更改代码会有所帮助:

case 0 : out.println("tails"); break;
case 1 : out.println("heads"); break;

但是对于像您这样的情况,我更愿意使用
布尔标志来解决我的问题。

在第一个case块之后需要一个break语句来获得预期的行为。switch语句的工作方式是,在不中断的情况下,控制流在匹配的case之后执行每个语句。这将是您的案例的正确代码

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中工作的信息。

在案例之间遗漏了
break
…此代码无法编译….
case1;
在您的案例之后添加break语句哦,是的!谢谢!@piyushjaiswal@OrchoSiddiqui-请选择并标记问题的适当答案
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");
        }
    }
}