2013-04-11 4 views
5

Эй У меня есть вопрос, который я пытался выяснить в течение нескольких часов в настоящее время, мне нужно использовать вложенные циклы для печати следующегоNest Loops, не может понять, как код этого

-----1----- 
    ----333---- 
    ---55555--- 
    --7777777-- 
    -999999999- 

Это что я до сих пор.

public static void Problem6() { 
     System.out.println("Problem 6:"); 
     for (int i = 1; i <= 5; i++) { 
      for (int j = 5; j >= i; j--) { 
       System.out.print("-"); 
      } 
      for (int j = 1; j <= 9; j += 2) { 
       System.out.print(j); 
      } 
      for (int j = 5; j >= i; j--) { 
       System.out.print("-"); 
      } 
      System.out.println(); 
     } 
    } 

Это то, что он печатает

-----13579----- 
    ----13579---- 
    ---13579--- 
    --13579-- 
    -13579- 
+0

Вам необходимо изменить центральную петлю двумя способами: Сделать количество итераций, а значение, напечатанное для обоих, зависит от значения 'i'. –

+0

ты действительно рядом. проблема заключается в тестировании во втором вложенном for-loop. вам было бы лучше разобраться в себе, чем получить ответ на ложку. –

+0

Хотелось бы самому разобраться в этом, за исключением того, что скоро это произойдет, и я уже потратил много времени на это, я чувствую, что это настолько очевидно, что я просто не вижу его. – Brent

ответ

8

У вас есть правильное количество черточек, вы просто не распечатав номер правильно. Давайте рассмотрим, почему это так:

Какая петля печатает цифры? Второй вложенный цикл.

Что делать? Он печатает j, где j колеблется от 1 до 9 и j увеличивается на 2 каждой итерации цикла. Другими словами, 1, 3, 5, 7, 9, что подтверждено на вашем выходе

Что вы хотите от этого сделать? Хорошо, давайте посмотрим на желаемый результат. Вы хотите, чтобы 1 был напечатан один раз на первая линия. Вы хотите 3 печатать три раз на third следующая строка. Вы хотите 5 печатать пять раз на 5th следующая линия после этого. И так далее.

Вы заметили шаблон? Вы хотите, чтобы цикл мы упоминали выше, чтобы напечатать номер же (1, 3, 5, ... i) как число раз (1, 3, 5, ... i).

Редактировать Whooops Я на самом деле неправильно читаю результат. Мой ответ по-прежнему очень похож на предыдущий, но я солгал о том, какую строку вы печатаете. Он по-прежнему 3три раз, пять раз, но разные линии. Самый простой способ перейти от моего решения к реальному - заметить, что на четных линиях ... вы ничего не делаете. Вы могли бы даже написать свое решение таким образом.

Еще один совет: вы должны просто сосредоточиться на получении чисел на каждой строке справа и тире отдельно. Вероятно, вы закроете количество тире, когда вы исправляете числа в каждой строке, но затем вы поймете, как легко устранить тире.

+0

Да, вы правы. Я добавил редактирование. – rliu

+0

ДА Я ПОЛУЧИЛ ЭТО, понял, просто изменил мою основную петлю на 10 и подсчитал на 2, начиная с 1, так что пошел 1, 3, 5 7, 9 – Brent

+0

Да, это то, что я собирался. Я пытаюсь понять, как отредактировать мой ответ, чтобы он был технически корректным в дополнение к концептуальной помощи. – rliu

-1
public class pattern 
{ 
    public static void main ( ) 
    { 
     for (int i = 1;i<=9;i+=2) 
     { 
      for(int b = 9;b>=i;b-=2) 
      { 
       System.out.print(" "); 
      } 
      for(int j =1;j<=i;j++) 
      { 
       System.out.print(i); 
      } 
      System.out.println(); 
     } 
    } 
}