我这里遇到了一个奇怪的问题。不确定原因是什么。我正在用 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/