以2个相等数字停止的随机数序列

时间:2012-12-12 00:23:13

标签: java random sequence

  

创建一个由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个数字。 “

谢谢,非常感谢帮助!

3 个答案:

答案 0 :(得分:2)

我没有看到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

答案 1 :(得分: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。 我拿了你的小费并重新编辑了程序,它完美无缺。它比我想象的要容易(我过度思考)。

再次感谢你!

答案 2 :(得分: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++;
   } 
 }   

}