0

次のように画面に出力するプログラムを作成します。

1 2 3 4 5 6 7 8 9 10

2 3 4 5 6 7 8 9 10 

3 4 5 6 7 8 9 10 

4 5 6 7 8 9 10 

5 6 7 8 9 10 

6 7 8 9 10 

7 8 9 10 

8 9 10

ネストされたループを修正するのに少し問題があります-そのように見えるようにしていますが、数字は10で止まりません。コードはこれを出力します:

1 2 3 4 5 6 7 8 9 10

2 3 4 5 6 7 8 9 10 11

3 4 5 6 7 8 9 10 11 12

4 5 6 7 8 9 10 11 12 13

5 6 7 8 9 10 11 12 13 14

6 7 8 9 10 11 12 13 14 15

7 8 9 10 11 12 13 14 15 16

8 9 10 11 12 13 14 15 16 17

私は初心者のプログラマーで、これについて助けが必要です。ネストされたループ内に 3 番目のループが既に必要ですか? どんな助けでも大歓迎です!これまでの私のコードは次のとおりです。

import java.util.Scanner;

public class LoopProgram
{
    public static void main(String args [])
    {
        for (int e=0; e<8; e++)
        {
            for (int f=1; f<=10; f++)
            {
                System.out.print(f + e + " ");
            }   
            System.out.println(); 
        }
    }
}
4

7 に答える 7

4

2ループで十分です。

外側のループは 8 回実行されます。これは既に機能しています。

ただし、内側のループは常に 10 回実行されますが、これは望ましくありません。内側のループを最初に 10 回実行し、次に 9 回だけ、次に 8 回だけ実行するようにします。ここでのコツは、次のように、その内側のループの開始値または終了値を変更することです。

for (int e=0;e<8;e++) {
    for (int f=e+1; f<=10; f++) {
        ...
    } 
}
于 2013-03-14T00:41:49.487 に答える
1

2番目のループでこれを試してください:

for(int f=e;f<=10;f++)

そして出力用

System.out.print(f+" ");
于 2013-03-14T00:41:45.987 に答える
1

これがあなたが探しているものだと思います。

for(int e=1;e<9;e++) {
    for(int f=e;f<=10;f++) {
        System.out.print(f+" ");
    }
    System.out.println();
}

これは、あなたが尋ねたものを正確に出力します。

于 2013-03-14T00:41:59.053 に答える
1

これが私がそれを行う方法です

for (int i = 1; i <= 8; i++) {
        for (int j = i; j <= 10; j++) 
            System.out.print(j + " ");
        System.out.println();
}
于 2013-03-28T04:08:36.457 に答える
0

これは、この種のことを自分で解決する方法の説明です。forループの最も一般的なケースでは、インデックス変数について3つの質問を自問する必要があります。

  1. 私がそれに持たせたい最初の価値は何ですか?
  2. どのような条件下で別の反復を実行しますか?
  3. 反復ごとにどのように変更する必要がありますか?

内側のループの場合、答えは次のとおりです。

  1. e
  2. f <= 10
  3. f ++

それから、ループを構築するのは簡単です、そしてあなたはすでにあなたのために書かれたそれのいくつかの例を持っています。

于 2013-03-14T01:02:16.907 に答える
0

必要なループは 2 つだけです。外側のループは 8 回実行され、内側のループは外側のカウンターの値から始まります (これにより、各行は 10 までカウントされますが、常に最後の行の最初の値 + 1 から開始されます)。カウンターが 10 未満のときに実行します。

そんな感じ:

for (int i = 0; i < 8; i++) {
    for (int e = i; e < 10; e++) {
        //print e + 1
    } 
}

行が 0 から始まるのではなく、1 から 10 になるように e + 1 を出力する必要があります。

于 2013-03-14T00:56:42.257 に答える
0

3 ループは深刻なオーバーキルです。これは、1 つのループと 2 つのカウンターで実行できます。

public class LoopProgram {
  static final int LIMIT_1 = 8;
  static final int LIMIT_2 = 10;

  public static void main(String[] args) {
    int a = 1, b = 2;
    while(b <= (LIMIT_1 + 1)) {
      System.out.print(a);
      if(a < LIMIT_2) {
        System.out.print(" ");
        a++;
      } else {
        System.out.println();
        a = b;
        b++;
      }
    }
  }
}
于 2013-03-14T00:50:57.673 に答える