Так что я попытался проанализировать свой код и то, что я нашел
Ваша ошибка:
Здесь мы видим, что желаемый результат и ваш выход становится отличным от выходной строки номер 2, и причина, по которой я нашел, - это состояние if
, которое равно star >= row
так позволяет перебирать петлю звезды для значения 2
row
:
if(star >= row) //when star = 10 - condition true. * will be the output
if(star >= row) //when star = 9 - condition true. * will be the output
if(star >= row) //when star = 8 - condition true. * will be the output
так *
будет выходом недо star>=row
возвращает ложь, которая будет star = 1
сценария для этой итерации.
Аналогично для row = 3
условие будет истинным, если значение star
не станет <=2
. Поэтому проблема заключается в том, что вы печатаете *
в начале, и условие для
приходит после печати *
.
Возможное решение:
В основном вам нужно напечатать
в начале, а не в конце. Таким образом, при том же условии вам может потребоваться изменить метод итерации для столбцов, чтобы отменить порядок печати. если вы измените порядок своего цикла, вы можете выполнить эту работу. Позволяет итерацию цикла для row
значения 2
:
if(star >= row) //when star = 1 - condition false. ` ` will be the output
if(star >= row) //when star = 2 - condition true. * will be the output
if(star >= row) //when star = 8 - condition true. * will be the output
так что в этом случае
будет напечатана первым и *
будет распечатан позже.
обновленный код:
Я обновил свой код. Посмотрите на inner for loop
.
for (int row = 1; row <= 10; row++)
{
for (int star = 1; star <= 10; star++)
{
if (star >= row)
{
System.out.print("*");
}
else
{
System.out.print(" ");
}
}
System.out.println();
}
Надеется, что это помогает :)
Попробуйте 'если (звезда <строку) {'. –
Подсказка: такие вещи действительно идеальны для использования отладчика. И еще лучше: вы можете запускать их на бумаге. Просто возьмите ручку и выполните свой код вручную. Я уверен, что это не займет у вас более 5 минут, прежде чем вы решите проблему. – GhostCat
Что называется? 'для столбца int P = 1' вместо' star = 10' было бы менее ошеломляющим. –