2012-04-16 2 views
-1

Я изучаю номера Pyramid на Java, у которых есть такой код.Понимание чисел пирамиды в Java

public class PyramidCharForLup { 

    public static void main(String[] args) { 

    int x = 7; 
    for (int i = 1; i <= x; i++) 
    { 
     for (int j = 1; j <= x - i; j++) 
      System.out.print(" "); 
     for (int k = i; k >= 1; k--) 
      System.out.print((k >=10) ?+ k : " " + k); 
     for (int k = 2; k <=i; k++) 
      System.out.print((k>= 10) ?+ k : " " + k); 
     System.out.println(); 
    } 
    } 
} 

Выход

    1 
       2 1 2 
       3 2 1 2 3 
      4 3 2 1 2 3 4 
     5 4 3 2 1 2 3 4 5 
    6 5 4 3 2 1 2 3 4 5 6 
    7 6 5 4 3 2 1 2 3 4 5 6 7 

Я измельчить код и изучать его построчно я уже учится в этой линии до сих пор .. хехех

Так вот код, который я хочу задать.

public class PyramidCharForLup { 

    public static void main(String[] args) 
    { 
     int x = 7; 
     for (int i = 1; i <= x; i++) { 
     for (int j = 1; j <= x - i; j++) 
      System.out.print(j); 

     } 
    } 
} 

выход это 123456123451234123121 разъяснений, если вы хотите организовать 123456 12345 1234 123 12 1

Первый вопрос: есть в коде ifor (int j = 1; j <= x - i; j++) стать i= 1234567?
Второй вопрос: от инициализации, который один, если приращение 1..2..3..5..6..7 .. есть приращение вычитания последнего номера из 1234567, как

1234567-1 .. 123456 - 1 ... 12345 - 1 ... 1234 - 1 ... 123 - 1 ... 12-1 ... 1-0 .... до ложных Я прав?

и это причина, почему я получил этот выход 123456 12345 1234 123 12 1

+0

Я хочу идти дальше, пока я понимаю, что ум Bugling пирамида, пожалуйста, помогите мне по то, как hehehehe .... – JustNoobWillingToLearn

ответ

1

Ваш код имеет два вложенных циклов (один цикл выполняется внутри другого). Это то, что происходит:

  1. Вы устанавливаете х до 7
  2. Вы начинаете внешний цикл, полагая I = 1. Так как 1 < = 7 петля вводится.
  3. Вы начинаете внутренний цикл, устанавливая j = 1. С 1 < = 6 (7-1 от x - i) вводится цикл.
  4. j (1) печатается.
  5. j увеличивается с 1, а так как 2 меньше 6, внутренний цикл продолжается.
  6. j (2) печатается.

Это продолжается до тех пор, пока J 6.

  1. J (6) печатается.
  2. j увеличивается на 1 и теперь 7, что не < = 6, поэтому внутренний цикл выходит.
  3. i увеличивается на 1 (и теперь 2).
  4. Внутренний контур вводится снова, установка j на 1. Так как j < 5 (7-2 от x - i) вводится цикл. Отпечатано 11 j (1). 12 j увеличивается на единицу и теперь равно 2. Поскольку 2 < 6 цикл продолжается.

Это продолжается до тех пор, пока я не достигнет 7. Когда i увеличено на 1, оно равно 8, которое не равно < = 7, поэтому внешний цикл также существует и ваша программа закончена.

Ваша программа будет считать и писать цифры от 1..6, то от 1..5, пока он не достигнет 1..1

+0

, так что я здесь не 1234567 hahaha .... я вот 1 am, я прав? Я действительно новичок в этом. – JustNoobWillingToLearn

+0

, поэтому он не меняет инициализацию i = 1? Потому что, если я покажу выход первого цикла. для (i = 1; i <= 7, i ++) у меня есть выход 1234567. – JustNoobWillingToLearn

+0

OK OK Я понимаю это сейчас. Уже поздно ночью здесь, в нашей стране, вопрос, который я могу задать, может быть завтра GMT + 8 lol. – JustNoobWillingToLearn

Смежные вопросы