2013-04-26 84 views
-3

如何循环?如何打印大于0的连续整数,每行三个?

我想这个循环:

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。

+1

输出应该是什么样子? – CloudyMarble 2013-04-26 05:04:55

+0

检查我的答案,只使用一个循环的解决方案 – rajesh 2013-04-26 05:16:41

回答

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

现在你可以用你的变量进行合并和逻辑

0

使用一个简单的计数器:

int j = 0; 
for (int i = 0; i < 10; i++) 
    System.out.println(i + " " + ++j + " " + ++j + " " + ++j + " "); 
-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(); 
     } 
    } 
} 
1

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

int n = 15; 

for (int i = 0; i < n; i++) { 
    if (i % 3 == 0) { 
     System.out.println(); 
    } 
    System.out.print(i + " "); 
} 
+0

@downvoter,谨慎解释为什么这是downvoted? – rajesh 2013-04-27 04:52:16

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