簡體   English   中英

以2個相等數字停止的隨機數序列

[英]Random number sequence that stops with 2 equal numbers

創建一個由0-9的數字組成的數字序列,如果兩個數字背靠背出現,則結束序列並顯示序列的長度。

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

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個數字。

謝謝,非常感謝幫助!

我沒有看到num2正在改變的任何地方。 您希望num2保存您在循環的上一次迭代中生成的數字。 所以,在循環結束之前,你需要設置num2 = num3;

真的,根本不需要num3。 您在循環之前設置為分別使用num1num2作為上一個和當前數字,然后將num3添加到混合中。 重命名'num1'和'num2'(比如'previous'和'current')可能有助於澄清發生了什么。

剛剛注意到,還有一個小問題。 如果第一項和第二項相等,則根本不會完成循環,因此錯過輸出。 你應該在循環退出后輸出(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
    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。 我拿了你的小費並重新編輯了程序,它完美無缺。 它比我想象的容易(我過度思考)。

再次感謝你!

使用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++;
   } 
 }   

}

暫無
暫無

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

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