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

我是一个初学者程序员,需要帮助 - 你需要嵌套循环内的第三个循环吗?任何帮助表示赞赏!到目前为止,这是我的代码:

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

两个循环就足够了。

外循环运行八次,你已经得到了它的工作。

但是,您的内部循环总是运行十次,这不是您想要的。您希望内部循环首先运行 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

在第二个循环中试试这个:

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

三环是严重的矫枉过正。这可以通过一个循环和两个计数器来完成。

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 回答
0

您只需要两个循环:外部循环将运行八次,内部循环将从外部计数器的值开始(这就是使每行最多计数 10 但始终从最后一行的第一个值 + 1 开始的原因)和在计数器小于 10 时运行。

像这样的东西:

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

您必须打印 e + 1 以便您的行不从 0 开始,而是从 1 开始,直到 10。

于 2013-03-14T00:56:42.257 回答
0

这更多的是对如何为自己解决这种事情的解释。在 for 循环最常见的情况下,您应该问自己三个关于索引变量的问题:

  1. 我希望它具有的第一个值是什么?
  2. 我想在什么条件下进行另一次迭代?
  3. 它应该如何从迭代到迭代?

对于您的内部循环,答案是:

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

由此,很容易构建循环,并且您已经为您编写了几个它的示例。

于 2013-03-14T01:02:16.907 回答