2013-02-13 684 views
0

我需要生成從0000到9999的4位數字,我似乎無法這樣做。我有這個代碼,但它會在某個時候生成762,我不能讓它這樣做。我確實需要使用這些方法來生成它。生成0000和9999之間的隨機數

private java.util.Random rndGenerator = new java.util.Random(); 
private int randomValue; 
public final static int NUMBER_OF_VALUES = 9999; 


public GuessRandomValue() { 
    randomValue = rndGenerator.nextInt(NUMBER_OF_VALUES); 
} 


public void setAnswer() { 
    randomValue = rndGenerator.nextInt(NUMBER_OF_VALUES); 
} 
+2

您不需要更改隨機碼;你需要改變你打印出來的方式。 – 2013-02-13 00:32:08

+0

有什麼問題? 762在給定的時間間隔內。你需要左邊的零嗎?像:0762? – 2013-02-13 00:32:27

+5

你爲什麼討厭762?這就像我最喜歡的數字之一。 – 2013-02-13 00:32:53

回答

5

你只需要使用表達式

String.format("%04d", randomValue); 

如果randomValue是762,調用String.format返回 「0762」 格式化你的隨機值,根據需要。


編輯:在回答評論下面

請留下randomValue爲整數。您只想使用此代碼進行用戶交互,即格式化。所以打印randomValue你會用

System.out.printf("%04d\n", randomValue); 

,你應該使用String.format如果有需要,以保持用戶交互字符串程序的任何部位,但也沒有必要改變你儲存randomValue的方式。

要比較用戶輸入的內容與randomValue,可以使用Integer.parseInt。所以,你可以使用

int testValue; 
try { 
    testValue = Integer.parseInt(inputLine, 10); 
} catch (NumberFormatException ex) { 
    // The user typed in something that isn't a number. Alert the user somehow, and make 
    // him or her try again 
} 

得到鍵入的值作爲一個int,而只是比較testValuerandomValue用==。

+0

或printf。但是你想要'%04d'。 – 2013-02-13 00:34:35

+0

@DaveNewton糟糕。感謝您指出錯字! – 2013-02-13 00:35:24

+0

反正有沒有把它作爲一個整數?例如,我的程序生成一個數字0000-9999,然後我輸入數字試圖猜測它。 – Castellanos 2013-02-13 00:41:58