创建一个由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个数字。 “
谢谢,非常感谢帮助!
答案 0 :(得分:2)
我没有看到num2正在改变的任何地方。您希望num2保存您在循环的上一次迭代中生成的数字。因此,在循环结束之前,您需要设置num2 = num3;
真的,根本不需要num3。您在循环之前设置为分别使用num1
和num2
作为上一个和当前数字,然后将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++;
}
}
}