java - java中生成随机数的switch语句: not working

标签 java if-statement random switch-statement

我在代码中使用了 switch 语句来掷硬币并生成随机结果。如果硬币落在 0 上,则显示反面;如果硬币落在 1 上,则显示正面。但是当我使用 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");
            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");
        }
    }
}

最佳答案

如果您不终止 switch 语句中的

case 语句(通常使用 break,但 return 抛出异常也能达到目的)。在您的情况下,当您随机生成 0 时,它的情况会被执行,然后程序将继续执行下一个情况(1)。您可以通过在每个 case 末尾添加 break 语句来解决此问题:

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

更多信息可以在Java's tutorial on the subject中找到.

关于java - java中生成随机数的switch语句: not working,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37383521/

相关文章:

java - Java中是否可以通过反射在新进程中调用main方法

java - 两个 ListView 不适用于 NavigationDrawer

java - Java中finish()和super.finish()的区别?

javascript - 在这种情况下 IF 条件始终为假

xml - XSL if 测试在有值时显示内容

Java Integer类中的getChars方法,为什么它使用按位运算而不是算术运算?

javascript - 检查 $(this) 是否有在数组中指定类或 id 的 parent

python - python随机模块的内部状态

random - 使用随机数函数在数学上创建正数或负数

c++ - 在C++中均匀生成随机数