2012-12-12 65 views
4

創建一個由0-9的數字組成的數字序列,如果兩個數字背靠背顯示,則結束序列並顯示序列的長度。隨機數字序列,停止2個相同的數字

我一直在試圖找出一種方法來編寫一個程序與上述要求。我只是想不出一個辦法來做到這一點。我已經得到的最多的是:

import java.util.Random; 
public class RandomSequence{ 
    public static void main(String[]args){ 
    int num1, num2, num3, i=2; 
    Random r=new Random(); 
    num1=r.nextInt(10); 
    num2=r.nextInt(10); 
    System.out.print(num1+", "+num2+", "); 
    while (num1!=num2){ 
     num3=r.nextInt(10); 
     i++; 
     System.out.print(num3+", "); 
     if (num3==num2){ 
     System.out.println("There are "+i+" numbers in the sequence"); 

..

,我只是無法弄清楚如何結束序列時,兩個相同的數字出現背靠背。

這裏給出一個例子:

1,6,2,9,8,1,4,2,8,2,2 

這個序列是11號長。 「

謝謝你,並幫助深表感謝!

+1

通過背靠背,你的意思是'如果(CURRENT_NUMBER == previous_number){'很容易嗎? –

回答

2

我沒有看到任何地方NUM2正在發生變化。你想NUM2來保存你在循環的前一次迭代產生的數量。所以,只要你的循環結束之前,你需要設置num2 = num3;

真的,沒有需要NUM3都沒有。你得到建立循環之前分別使用num1num2作爲以前和當前數量,以及然後將num3添加到混音中,重命名'num1'和'num2'(比如說'上一個'和'當前')可能有助於澄清發生了什麼。

剛剛發現,還有一個小問題。如果第一學期和第二學期是平等的,你根本不會經過這個循環,所以錯過了輸出。您應該在循環退出之後輸出(畢竟,while條件已經在檢查相等性)。

========

事情是這樣的:

get first number, store as 'previous'. 
get second number, store as 'current'. 
print first couple numbers 
while (previous!=current){ 
    count up. 
    move 'current' to 'previous' 
    get next number, store as 'current' 
    print current value 
} 
print final count 
+0

好吧,我只是想不出其他任何東西。 – QuakeKO

1
import java.util.Random; 
public class RandomSequence{ 
    public static void main(String[]args){ 
    int num1, num2, num3, i=2; 
    Random r=new Random(); 
    num1=r.nextInt(10); 
    num2=r.nextInt(10); 
    System.out.print(num1+", "+num2); 
    while (num1!=num2){ 
     num1=num2; 
     num2=r.nextInt(10); 
     i++; 
     System.out.print(", "+num2); 
    } 
    System.out.println("\n\nThis sequence consists of "+i+" numbers"); 
    } 
} 

謝謝你這麼多femtoRgon。 我把你的小費和重新編輯的程序,它完美的作品。這比我想象的要容易得多(我過度想到它)。

再次感謝您!

0

這將與一個ArrayList

import java.util.ArrayList; 
import java.util.Random; 
public class RandomSequenceB { 
public static void main(String[]args){ 
    int i=0; 
    ArrayList sequence = new ArrayList(); 

    while (true) { 
    sequence.add(new Random().nextInt(10)); 
    System.out.println(sequence); 
    if (i > 1 && sequence.get(i) == sequence.get(i - 1)){ 
     System.out.println("There are "+i+" numbers in the sequence"); 
     break; 
    } 
    i++; 
    } 
} 

}