java - 随机数未打印出来

标签 java random system.out

我这里遇到了一个奇怪的问题。不确定原因是什么。我正在用 Java 编写演讲演示,并且正在编写一些简单的程序。由于某种原因,在使用石头剪刀布程序时,它并不总是想返回我的随机数。我的起始代码如下,我想说的是,每 3 次中有一次,它实际上会打印出一个数字。

Random rand = new Random();
int randomNum = rand.nextInt(3) + 1;
System.out.println(randomNum);

就像我说的,非常简单的代码,但我不知道为什么它只是有时打印出数字......

编辑:整个项目

主要 导入java.util.Scanner;

public class Speech_Main {

public static void main(String[] args) {
        boolean running = true;
        Scanner in = new Scanner(System.in);


        while(running){
            if(in.next().equalsIgnoreCase("exit")){
                running = false;
            }
            if(in.next().equalsIgnoreCase("Hello_World")){
                Hello_World.start();
            }
            if(in.next().equalsIgnoreCase("rps")){
                Rock_Paper_Scissors.start();
            }
        }
        in.close();
        return;
}

}

RPS

import java.util.Random;


public class Rock_Paper_Scissors {
public static void start(){
    System.out.println(random());
}
private static int random(){

    Random rand = new Random();
    int randomNum = rand.nextInt() + 1;
    return randomNum;
}
}

最佳答案

问题是每次在循环中,您都会调用 in.next() 三次:

    while(running){
        if(in.next().equalsIgnoreCase("exit")){
            running = false;
        }
        if(in.next().equalsIgnoreCase("Hello_World")){
            Hello_World.start();
        }
        if(in.next().equalsIgnoreCase("rps")){
            Rock_Paper_Scissors.start();
        }
    }

当到达第一个 if 时,您调用 in.next(),它会从扫描器获取下一个标记。问题是,当你到达第二个 if 时,它会再次调用 in.next() ,然后它会尝试获取另一个 token 。它不会使用前一个,因为您已告诉它获取一个新的。要解决此问题,请声明一个变量以在循环开始处保存 in.next():

String input = in.next();

然后检查变量。

关于java - 随机数未打印出来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21761961/

相关文章:

javascript - JS : Assignment within if statment doesn't work

Java 错误捕获问题

java - System类和PrintStream类是什么关系

java - 在 Android 中使用 Java API

java - 如何为 ldap DirContext.search(...) 指定搜索范围和返回属性

Java 有序可哈希集合

java - eclipse : Hot Code Replace Failed

java - Eclipse 在运行时抛出 ExceptionInInitializerError ,在调试时抛出 NoClassDefFoundError

java - 如何生成随机字母数字字符串

java - 在 -x 和 x 之间生成随机 Double