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");

..

そして、2つの等しい数字が連続して表示されたときにシーケンスを終了する方法がわかりません。

与えられた例は次のとおりです。

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

このシーケンスの長さは11です。「」

ありがとう、そして助けは大歓迎です!

4

3 に答える 3

2

num2が変化しているところはどこにも見当たりません。num2には、ループの前の反復で生成した数値を保持する必要があります。したがって、ループが終了する直前に設定する必要がありますnum2 = num3;

実際、num3はまったく必要ありません。num1ループの前に、それぞれ前の番号とnum2現在の番号として使用するように設定してnum3から、ミックスに追加します。「num1」と「num2」の名前を変更すると(「前の」と「現在の」など)、何が起こっているのかを明確にするのに役立つ場合があります。

気づいたばかりですが、もう1つ小さな問題があります。第1項と第2項が等しい場合、ループをまったく通過しないため、出力を見逃します。代わりに、ループが終了した後に出力する必要があります(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
于 2012-12-12T00:27:38.350 に答える
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。私はあなたのヒントを受け取り、プログラムを再編集しました、そしてそれは完全に機能します。思ったより簡単でした(考えすぎました)。

ありがとうございました!

于 2012-12-12T00:40:52.677 に答える
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++;
   } 
 }   

}

于 2012-12-12T00:56:36.843 に答える