2017-02-16 29 views
2

Использование Java,Для шаблона Loop от 654321,54321 .. 1

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

Пример,

654321 

54321 

4321 

321 

21 

1 

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

654321 

65432 

6543 

654 

65 

6 

Это что-то вроде того, что я хочу поставить не совсем так, как бы вы его отсчитали с самого начала?

public class test_for_loops{ 

    public static void main (String [] args){ 
     int lines = 6; 
     for (int i = 1; i <= lines; i++){ 
     for (int j = lines; j >= i; j--){ 
     System.out.print (j + " "); 
     } 
     System.out.println(); 
    } 
    } 
} 
+0

Ваш внутренний цикл печати 'j' который всегда начинается с 'lines', который установлен на' 6'. Таким образом, ваш результат ожидается. Если вы хотите печатать, начиная с другого значения, вам нужно выяснить выражение, которое будет вычислять это значение. Для первой строки это должно быть 6, для второго 5, третьего 4 ... вы видите шаблон? – Pshemo

+3

люди не должны давать ответ, это контрпродуктивно для OP, которому просто нужно отлаживать код немного дольше, пока, наконец, не выясните, где ошибка в текущей логике. – dabadaba

+0

Спасибо, Pshemo, что делает намного больше смысла, я не был думая об этом, заявляя с 6, инстинкт просто знал, что в нем должно быть 6 символов –

ответ

0

Попробуйте это:

int lines = 6; 

for (int i = 1; i <= lines; i++){ 

    for (int j = lines - i + 1; j >= 1; j--){ 

     System.out.print (j + " "); 
    } 

    System.out.println(); 
} 

Выход:

6 5 4 3 2 1 
5 4 3 2 1 
4 3 2 1 
3 2 1 
2 1 
1 
0

1.) просто начать i из 0 и установить j=lines-i

2.) траверс j до 1

int lines = 6; 
     for (int i = 0; i < lines; i++){ 
     for (int j = lines-i; j >= 1; j--){ 
     System.out.print (j + " "); 
     } 
     System.out.println(); 
    } 

Выход:

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

Рабочая

i = 0 
    j (6 - 0 => 6) 6 , 5 , 4 , 3 , 2 , 1 

i = 1 
    j (6 - 1 => 5) 5 , 4 , 3 , 2 , 1 

i = 2 
    j (6 - 2 => 4) 4 , 3 , 2 , 1 
    . 
    . 
i = 5 
    j (6 - 5 => 1) 1 
0

Вы не уменьшаете линии, поэтому j всегда устанавливается на 6 в начале внутреннего цикла. Попробуйте это:

public static void main (String [] args){ 
    int lines = 6; 
    int jcounter = lines; 
    for (int i = 1; i <= lines; i++){ 
    for (int j = jcounter ; j >= 1; j--){ 
    System.out.print (j + " "); 
    } 
    jcounter--; 
    System.out.println(); 
} 

} }

0
int n = 6; 
for (int i = n; i > 0; i--) { 
    for (int j = i; j > 0; j--) { 
     System.out.print(j); 
    } 
    System.out.println(); 
} 

Пояснения: использовать внешний контур для управления длиной (максимальное количество) каждой строки. Используйте внутренний цикл для печати элементов каждой строки с использованием этой длины. Я надеюсь, что это ясно

0

Я просто изменил порядок, в котором цикл идет

public class test_for_loops{ 

    public static void main (String [] args){ 
     int lines = 6; 
     for (int cLine = lines; i > 0 ; i--){ 
     for (int j = cLine; j > 0; j--){ 
     System.out.print(j + " "); 
     } 
     System.out.println(); 
    } 
    } 
} 
0

Вы слишком близко, нам нужно сделать изменения только в 2-х местах, то есть

1.) внешний контур делают я = 0 и дайте ему поработать до < линий

2.) Внутренний контур сделать J = линии-я и дайте ему поработать до > 0

public class test_for_loops{ 
    public static void main (String [] args){ 
    int lines = 6; 
    for (int i = 0; i < lines; i++){ 
     for (int j = lines-i; j > 0; j--){ 
     System.out.print (j + " "); 
     } 
     System.out.println(); 
    } 
} 
} 
0

Я не совсем уверен, почему вы хотите сделать это в цикле для-, но лучший способ Я могу думать о том, чтобы сделать это, создав целочисленный массив, а затем распечатав значения в массиве по их индексу. С каждой итерацией через цикл мы начинаем печатать часть массива, которая на 1 позицию меньше (т.е. мы начинаем с печати всех 6 цифр в массиве (6-0 = 6), затем мы печатаем первые 5 цифр в массив (6-1 = 5), а затем первый 4 (6-2 = 4) и т. д.) ... Единственная проблема с этим - когда вы попадаете в положение печати. Цикл никогда не достигает нуля, потому что он выпрыгивает, когда вы достигаете нуля, или вы получаете исключение из-за пределов, если вы этого не делаете. Так что лучшее решение, которое я мог придумать ниже - я должен был напечатать последнюю цифру:

public class test_for_loops{ 
    public static void main (String [] args){\ 
    int lines = 6; 
    int digits[] = {1,2,3,4,5,6}; 
    for (int i = 1; i < lines; i++){ 
     for (int j = lines; j >= i; j--){ 
      System.out.print (digits[j-i]); 
     } 
     System.out.println("\n");  
    } 
    System.out.println(1); 
} 

Это произведет следующий вывод:

654321 
54321 
4321 
321 
21 
1 

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

  • Нет связанных вопросов^_^