簡體   English   中英

不打印隨機數

[英]Random Numbers Not Printing 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() 3次:

    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() ,然后它將嘗試獲取另一個令牌。 它不使用前一個,因為您已經告訴它要換一個新的。 要解決此問題,請在循環開始時聲明一個變量以保存in.next()

String input = in.next();

然后檢查變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM