2015-04-12 72 views
0

我這裏有一個隨機數發生器,其拍攝數字1 - 50用隨機數發生器循環在Java中

我希望它做的是選擇一個第二隨機數從1-50什麼,這將只有打印到控制檯,如果它大於以前的隨機數,並重復許多次,比如說10次。

我的老師要我只使用Math.floor(的Math.random()方法來生成一個號碼,我在那工作。

我不知道如何比較最新生成的數字到以前生成的數字。

我走到這一步,是

int myRand = 10; 
    while (myRand > 0) { 
     int myRand2 = (int) (Math.floor(Math.random() * 50) + 1); 
     System.out.println(myRand2); 
     System.out.println(); 
     myRand--; 

會在哪裏,將首先生成的數字比較,隨後產生的數字,第二部分去?

+0

請查看Random類。使用'nextInt()'獲取整數值不僅更清晰,還避免了許多陷阱並避免了投射。 – Hannes

回答

1

首先讓我們來選擇一個隨機數:

int randomNumber = pick(); 

現在你需要選擇另一個

int otherRandomNumber = pick(); 

並打印到控制檯如果它比前一個更大

if (otherRandomNumber > randomNumber) { 
    System.out.println(otherRandomNumber); 
} 

但是,你需要做的10倍,所以你需要一個循環:

for (int i = 0; i < 10; i++) { 

而且,在每次迭代結束時,「其他」,最新的隨機數將成爲下一次迭代的前一個,所以讓我們重新命名變量並組裝所有這些:

int previousRandomNumber = pick(); 

for (int i = 0; i < 10; i++) { 
    int otherRandomNumber = pick(); 

    if (otherRandomNumber > previousRandomNumber) { 
     System.out.println(otherRandomNumber); 
    } 

    previousRandomNumber = otherRandomNumber; 
} 
+0

謝謝,這說得很清楚。我想我有'while'的問題,因爲我不確定我應該在哪裏放置結束循環的計數器。 – AndoTwo

0

你的第一個變量myRand不是隨機的......對我來說它看起來更像你的循環迭代器。你永遠不會做兩個隨機變量。如果我沒有理解你的問題,你的回答應該看起來更像是這樣的:

int i = 10; 
while (i > 0) 
{ 
    int myRand1 = (int) (Math.floor(Math.random() * 50) + 1); 
    int myRand2 = (int) (Math.floor(Math.random() * 50) + 1); 
    if (myRand2 > myRand1) 
     System.out.println(myRand2); 

    System.out.println(); 
    i--; 
} 
+0

我不知道這個問題,但是如果你想讓第一個隨機數只被選擇一次,那麼就在循環之外聲明它。 – Peter

+0

道歉,我錯了一些問題。最後那個櫃檯讓我一直在困擾着我。 – AndoTwo