#java
#java
Вопрос:
Как я могу распечатать это с помощью циклов for?
1
22
333
4444
55555
Я пробовал это. Но он печатает не то, что я хочу распечатать.
public class void main(String[] args) {
int last = 5, first = 1;
for (int i = 1; i <= last; i ) {
for (int j = last; j > i; j ) {
System.out.print(" ");
}
for (int k = i; k >= 1; k--){
System.out.print(k);
}
System.out.println();
}
}
Он просто печатает это.
1
21
321
4321
54321
Комментарии:
1. смотрите мое редактирование ниже
Ответ №1:
Как вы можете видеть при первой печати, это правильно, тогда, когда k
равно i
, так что просто печатайте i
System.out.print(i);
Редактировать
В соответствии с вашим отредактированным кодом, внесите вышеуказанные изменения, пожалуйста
for (int j = last; j > i; j--) {
вывод
1
22
333
4444
55555
Финал
int last = 5;
for (int i = 1; i <= last; i ) {
for (int j = last; j > i; j--) {
System.out.print(" ");
}
for (int k = i; k >= 1; k--){
System.out.print(i);
}
System.out.println();
}
Ответ №2:
Ваше новое решение проблемы просто измените k на i System.out.print(i)
int last = 5, first = 1;
for (int i = 1; i <= last; i ) {
for (int j = last; j > i; j--) {
System.out.print(" ");
}
for (int k = i; k >= 1; k--){
System.out.print(i);
}
System.out.println();
}
Вывод:
1
22
333
4444
55555
Комментарии:
1. Здравствуйте. Главное, чего я хочу добиться, это получить пробелы перед 1. Например, «1» это. Могу ли я как-нибудь это сделать?
2. Можете ли вы проверить, что я опубликовал еще раз, пожалуйста? Я отредактировал его. Теперь он показывает, что я хочу сделать.
3. @Edmund проверьте .
4. @Edmund чтобы стать хорошим разработчиком, вы должны улучшить свои навыки поиска. 🙂
Ответ №3:
Чтобы получить рабочий код, полезно сначала описать подробное решение словами. Это может быть:
- Чтобы напечатать треугольник высоты
height
, отдельно распечатайте каждую строку от 1 доn
.- Чтобы напечатать одну строку
row
, определите:- Сколько пробелов ему нужно.
- Сколько цифр ему нужно.
- Какую цифру печатать.
- Цифра для печати совпадает с номером строки
row
. - Количество цифр
digits
также совпадает с номером строкиrow
. - Количество пробелов
spaces
зависит от общей длины строки. - Количество пробелов равно
width - digits
. - Чтобы печатать символ повторно, используйте
for
цикл, считая от 0 до, но исключая повторение.
- Чтобы напечатать одну строку
Затем это описание преобразуется в этот код:
public static void main(String[] args) {
int height = 5;
int width = height; // can also be larger than height
for (int row = 1; row <= height; row ) {
int digit = row;
int digits = row;
int spaces = width - digits;
for (int i = 0; i < spaces; i ) {
System.out.print(' ');
}
for (int i = 0; i < digits; i ) {
System.out.print(digit); // assuming that digit needs only a single character to print
}
System.out.println();
}
}
Конечно, эта программа длиннее других, но при пошаговом просмотре с помощью отладчика у вас есть вся информация о текущем состоянии, записанная в переменных. Глядя на значения переменных, вы всегда можете спросить себя: имеет ли это смысл и подходит ли spaces
и digits
и width
вместе?
Эта программа также разбивает общую работу на два этапа. На первом этапе определите, что печатать и сколько, а затем просто распечатайте это.
Ответ №4:
В каждом цикле количество пробелов перед заданным числом i равно MaxNumber — i, а время отображения текущего числа равно i:
for (int i = 1; i <= 5; i )
{
String blanks = "";
for (int j = 1; j <= 5-i; j )
{
blanks = " ";
}
String number = "";
for(int k = 1; k <= i; k )
{
number = i;
}
System.out.print(blanks number);
System.out.println();
}