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

时间:2016-05-23 05:59:13

标签: java if-statement random switch-statement

我在我的代码中使用了一个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");
        }
    }
}

5 个答案:

答案 0 :(得分:4)

case声明中的

switch如果您没有终止它们(通常使用breakreturn或{{1}一个例外也会做的伎俩)。在您的情况下,当您随机生成throw时,执行其案例,然后程序继续执行下一个案例(0)。您可以通过在每个1

的末尾添加break语句来解决此问题
case

其他信息可在Java's tutorial on the subject

中找到

答案 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