2017-02-17 2 views
-1

Я создал код, который должен напечатать рисунок какНе удается напечатать шаблон

12345 
2345 
    345 
    45 
    5 

У меня есть код, написанный ниже, логика работает хорошо в Python, но в Java выход отличается.

class Testing{ 
    public static void main(String args[]) 
    { 
     for (int i = 1; i<6;i++) 
     { 

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

Выход всего 12345. Я не понимаю, почему он повторяется сначала для цикла только один раз.

+2

Поскольку вы приращение 'i' в вашем цикле. – azurefrog

+0

http://stackoverflow.com/questions/32260163/upside-down-right-triangle-in-java –

+0

вы пытаетесь найти ссылку, имеющую то, что вы ожидаете. –

ответ

1

Используйте другую переменную для управления while.

public class Testing { 

    public static void main(String args[]) { 
     int k; 
     for (int i = 1; i < 6; i++) { 

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

Вы можете увидеть это в этом link

это покажет вам:

12345 
2345 
    345 
    45 
    5 
+0

спасибо за помощь –

+0

no @AyushVerma Я не обманываю, если вы проверили ссылку, это было правильно с самого начала, поэтому вместо этого, чтобы скопировать ее, я пишу ее вручную, чтобы я сделал эту ошибку, вы поняли это сейчас, это сообщение для вас и для frederick99 ok, почему я должен обманывать ха-ха, это простая проблема –

+0

, которая даже сказала, что ..: D @YCF_L – frederick99

0

Примечание: Когда 'время цикла' увеличивается. Это увеличивает значение i больше 6. Поэтому в следующий раз он завершает внешний цикл. Это была твоя ошибка.

package com.prointment.api;

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

уже получил решение Спасибо anyways –

+0

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

+0

Спасибо за объяснение. Действительно ценю это –

0

Ниже приводится реализация задачи:

IntStream.rangeClosed(1, MAX) 
      .forEach(i -> IntStream.rangeClosed(1, MAX) 
        .mapToObj(j -> j == MAX ? j + "\n" : j >= i ? j : " ") 
        .forEach(System.out::print) 
      ); 

Набор MAX = 5 и он будет печатать ваш шаблон.

Выход:

12345 
2345 
    345 
    45 
    5 
Смежные вопросы