2013-04-26 2 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

+0

Проверьте мои анкеты для решения, которое использует только один цикл – rajesh

ответ

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 включительно и внешний цикл, который увеличивается на единицу каждый раз. Тогда формула:

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

Edit: Но я предполагаю, что я нашел более эффективный способ, используя один цикл

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

0

Существует много вложенных циклов выше. Вот масштабируемое решение в одном цикле.

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)); 
    } 
} 
Смежные вопросы