-3

如何循环这个?

我试图循环这个:

0-> 1,2,3
1-> 4,5,6
2-> 7,8,9
3-> 10,11,12
4->.....
......

我不知道如何编写这个算法。我在下面尝试过,它不起作用。

public class gYie {

    public static void main(String[] args) {
        int current = 0;
        int death = 0;
        for (int i = 0; i < 10; i++) {
            System.out.print(i + "    ");
            for (int j = 0; j < 3; j++) {
                System.out.print(death+j +" ");

                current += j;
            }
            death += current;
            System.out.println("");
        }
    }
}

它的输出是:

run:
0    0 1 2 
1    3 4 5 
2    9 10 11 
3    18 19 20 
4    30 31 32 
5    45 46 47 
6    63 64 65 
7    84 85 86 
8    108 109 110 
9    135 136 137 

如何解决这个问题?我想不出怎么写。
3 变为 18,19,20 而不是 12,13,14。

4

11 回答 11

2

看起来很像家庭作业,所以这里有一些伪代码(实际上是 Python)可以帮你解决问题:

for outer in range (10):
    print "%d ->"%(outer),
    for inner in range (3):
        print "%2d"%(outer * 3 + inner + 1),
    print

基本思想是简单地有一个 0 到 2 的内循环和一个每次增加 1 的外循环。然后是公式:

outer * 3 + inner + 1

为您提供所需的值:

0 ->  1  2  3
1 ->  4  5  6
2 ->  7  8  9
3 -> 10 11 12
4 -> 13 14 15
5 -> 16 17 18
6 -> 19 20 21
7 -> 22 23 24
8 -> 25 26 27
9 -> 28 29 30
于 2013-04-26T05:03:46.867 回答
2

尝试这个

int loopCount = 1;

for(int a = 1; a < 21; a++){
    System.out.println(a);
    for(int b = 0; b < 3; b++){
        System.out.print((loopCount++) + " ");  
    }
    System.out.println();
}

编辑:但我想我通过使用单个循环找到了一种更有效的方法

int x = 1;

for(int a = 0; a < 21; a++){    
    System.out.println(a + " -> " + (x) + " " + (x + 1) + " " + (x + 2));   
    x = x + 3;
}

现在您可以将它与您的变量和逻辑合并

于 2013-04-26T05:07:56.423 回答
2

你想多了。对于左侧,您只需要打印i. 对于右侧,您只需要一个current每次打印时都会递增的变量:

int current = 1;
for (int i = 0; i < 10; i++) {
    System.out.print(i + "    ");
    for (int j = 0; j < 3; j++) {
        System.out.print(current + " ");

        current ++;
    }
    System.out.println();
}
}
于 2013-04-26T05:02:18.393 回答
1

这是一个单循环的解决方案:

int n = 15;

for (int i = 0; i < n; i++) {
    if (i % 3 == 0) {
        System.out.println();
    }
    System.out.print(i + " ");
}
于 2013-04-26T05:15:16.897 回答
0

你需要做这样的事情。继续打印current.

   int current = 1;
   for (int i = 0; i < 10; i++) {
        System.out.print(i + "    ");
        for (int j = 0; j < 3; j++) {
            System.out.print(current +" ");
            current ++;
        }
        System.out.println();
    }
于 2013-04-26T05:03:38.007 回答
0

您可以简化代码如下:

public static void main(String[] args) {
    int death = 3;
    for (int i = 0; i < 10; i++) {
        System.out.print(i + "    ");
        death = 3*i;
        for (int j = 1; j <= 3; j++) {

            System.out.print(death+j +" ");
        }
        System.out.println("");
    }
}

}

您现在将获得以下输出:-

0    1 2 3 
1    4 5 6 
2    7 8 9 
3    10 11 12 
4    13 14 15 
5    16 17 18 
6    19 20 21 
7    22 23 24 
8    25 26 27 
9    28 29 30 
于 2013-04-26T05:04:27.240 回答
0

这应该做的工作......

public class gYie {

    public static void main(String[] args) {
        for (int i = 0, j = 1; i < 10; i++) {
            System.out.print(i + "    ");
            for (int h = 0; h < 3; h++, j++) {
                System.out.print(j +" ");
            }
            System.out.println("");
        }
    }
}
于 2013-04-26T05:07:17.673 回答
0

使用一个简单的计数器:

int j = 0;
for (int i = 0; i < 10; i++)
    System.out.println(i + "    " + ++j + " " + ++j + " " + ++j + " ");
于 2013-04-26T05:11:39.793 回答
0

上面有很多嵌套循环。这是单个 for 循环中的可扩展解决方案。

public static void main(String[] args) {
    int numbersPerLine = 3;
    int finalNumber = 12;
    int startingRowNumber = 0;
    System.out.print(startingRowNumber + " -> ");
    for(int i = 0; i < finalNumber; i++) {
        if(i > 0 && (i % numbersPerLine) == 0) {
            System.out.print("\n" + ((i / numbersPerLine) + startingRowNumber) + " -> ");
        } else if(i > 0) {
            System.out.print(",");            
        }
        System.out.print((i + 1));
    }
}
于 2013-04-26T05:32:35.407 回答
-1

像这样更改您的代码。

int death = 1;
for (int i = 1; i <= 10; i++) {
System.out.print(i + "    ");
for (int j = 0; j < 3; j++) {
    System.out.print(death++ +" ");

    //current += j;
    }
    //death += current;
    System.out.println("");
}
于 2013-04-26T05:07:48.057 回答
-1

得到了确切的解决方案......

class Alok{
   public static void main(String[] args){
       int i = 0,j=0;
         for(i=0;i<10;i++){
        System.out.print(""+i+"->");
        for(j=(i*3)+1;j<(i*3)+4;j++){
            System.out.print(""+j+" ");
        }System.out.println();
         }
    }
}
于 2013-04-26T05:11:40.143 回答