2013-02-27 5 views
-1
* 
    ***** 
********* 
********* 
********* 
********* 

вот мой код, но он не работаетЯ хочу напечатать parttern X или * используя цикл while. она должна выглядеть

final int WIDTH = 6; 
final int HEIGHT = 9; 
int i = 0; 
int j = 0; 

while (i < HEIGHT * 2 && j < WIDTH) { 

    if ((i + (i % 2) + (WIDTH)/2) < j // right slope 
     || (i + (i % 2) + j) < (WIDTH)/2)// left slope 
    { 
    System.out.print(" "); 
    } 
    else {// solid then 
    System.out.print("*"); 

    } 
} 

System.out.println(); 
i+=2; 
j++; 
+0

Итак, что он выводит? – Johan

+1

Из любопытства, почему вы увеличиваете 'i' и' j' после завершения печати? Это выглядит как бесконечный цикл ...! – d0rmLife

+1

это java, а не C правильно? –

ответ

1

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

Также + (я% 2) часть вашего, если условно бессмысленно, так как вы приращением I на 2 каждый раз, как и любое четное число% 2 равно 0.

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

+0

, даже если я поместил внутри цикла while, это только печать ** –

+0

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

+0

вы должны пройти логику, отслеживая значения на бумаге, и записывать вывод на бумаге. Это покажет вам, где ваша логика ошибочна и, скорее всего, даст вам приятный момент «Ага», когда вы увидите, что делаете. –

0

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

while (i < HEIGHT) { 

    if (i == 0) { 
    System.out.print(" *"); 
    } else if (i == 1) { 
    System.out.print(" *****"); 
    } else {// solid then 
    System.out.print("**********"); 
    } System.out.println(""); 
    i++; 
} 

Редактировать: Я также изменил условия проверки, чтобы упростить их. Если вам нужно только напечатать эту фигуру, все должно быть хорошо, но если вы будете делать разные размеры, вам нужно будет улучшить свой алгоритм!

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

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