2016-04-01 1 views
1

Мне нужно создать вложенную для петель, что дает следующий результат,Вложенные для петель

0 
1 
    2 
    3 

Это то, что у меня есть, но для второго испытания, userNum заменяется на 6 и, очевидно, мой код не .. Помогите?

public class NestedLoop { 
    public static void main (String [] args) { 
     int userNum = 0; 
     int i = 0; 
     int j = 0; 

     for(i = 0; i <= userNum; i++){ 
     System.out.println(i); 

      for(i = 1; i <= userNum; i++){ 
      System.out.println(" " +i); 

       for(i = 2; i <= userNum; i++){ 
       System.out.println(" " +i); 

       for(i = 3; i <= userNum; i++){ 
       System.out.println(" " + i); 

      } 
     } 
     } 
     } 
     return; 
    } 
} 
+0

Вы должны объяснить взаимосвязь между userNum и желаемым выходом. –

+0

userNum заменяется на 6? Это никогда не бывает нигде. Это 0. –

+0

Компьютер (мой онлайн-учебник) вводит номер для userNum, и мой код должен иметь возможность печатать числа в формате, как показано через заданное значение userNum. – Anne

ответ

0

Я думаю (это, скорее всего, предположение), что вы ищете это.

public static void main (String [] args) 
{ 
    int limit = 6; 

    for(int i = 0; i <= limit; i++) 
    { 
    for(int j = 0; j < i; j++) 
     System.out.print(" "); 
    System.out.println(i); 
    } 
} 

Причина, почему ваш подход не является, как я вижу, что вы пробегаем по номерам, чтобы показать (что правильно) но вы не петлю вверх на количество пробелов (которые я разрешается путем соотнесения предела внутреннего контура к текущему значению внешнего цикла в.

+0

Вы совершенно правы (за исключением того, что это действительно * должно быть «j Makoto

+0

@ Макото я сделал сейчас. Не уверен, достаточно ли он достаточно. –

0

Давайте поговорим немного о том, что ваши намерениях с этими петлями.

внутренний цикл предназначен для производства произвольного количества пробелов, в зависимости от какой номер вы повторяете. Итак, если вы на номер 0, вы не создаете пробелов, и если вы на 1, вы создаете одно пространство и так далее. Другое предостережение в том, что все они должны появиться на одной строке, поэтому System.out.println является неправильным выбором.

Чтобы распечатать пробелы, вы должны использовать System.out.print. Итак, давайте это напишем.

for(int j = 0; j < 6; j++) { 
    System.out.print(" "); 
} 

Это безоговорочно распечатает шесть пробелов. Это условие равно зависит от текущего числа, которое мы ищем. Это происходит из вашего внешнего цикла.

Вам нужно всего лишь определить цикл, который начинается с произвольной начальной точки - например, 0, - и затем петля, пока вы не достигнете самой вашего конечного числа. Для этого достаточно токовой петли:

for(i = 0; i <= userNum; i++) { 

} 

Теперь нам нужно собрать две части. Я оставляю вычисление из вопросительного знака и что печатать после вы напечатали пробелы в качестве упражнения для пользователя, имея в виду, что вы должны прекратить печать пробелов после того, как вы достигли своего номера.

for(int i = 0; i <= userNum; i++) { 
    for(int j = 0; j < ?; j++) { 
     System.out.print(" "); 
    } 
} 
0

Рассмотрим задачу В каждой строке, мы должны напечатать номер и различные номерные пространства в передней части номера.
Для этого нам нужны две петли - одна внешняя для итерации от 0 до N и одна внутренняя, чтобы добавить пробелы перед номером.

private static void method1(int userNum) { 
    int nummSpaces = 0; 
    for (int i = 0; i <= userNum; i++) { 
     for (int j = 0; j < nummSpaces; j++) { 
      System.out.print(" "); 
     } 
     nummSpaces++; 
     System.out.println(i); 
    } 
} 

В этом решении, мы имеем переменную numSpaces, которая используется для подсчета числа пробелов перед числом. Он не нужен - для этой цели мы можем использовать переменную i.

private static void method2(int userNum) { 
    for (int i = 0; i <= userNum; i++) { 
     for (int j = 0; j < i; j++) { 
      System.out.print(" "); 
     } 
     System.out.println(i); 
    } 
} 

Давайте еще раз анализирую выходную
- кулак строки: печатная нулевые пространств и число 0
- вторая линию: напечатанная один пробел и номер 1
- третья строку: печатная два пробела и номер 2 - и так далее

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

private static void method3(int userNum) { 
    for (String spaces = ""; spaces.length() <= userNum; spaces += " ") { 
     System.out.println(spaces + spaces.length()); 
    } 
} 
+0

Большое вам спасибо! – Anne