Для вашей конкретной проблемы, вы должен использовать StringBuilder
, так как он не только позволяет вам вводить append
символов, но также позволяет использовать строку, идеально подходящую для вашего сценария зеркалирования. Оставляя пространства в качестве единственной задачи для обработки, которая Arrays.fill()
может быть в состоянии помочь с
В своем коде вы ввели значение «А» (65) здесь: int ch = 65,ch1 = 65;
использовать при печати. Однако петли for
также работают с char
, что означает, что вы можете интегрировать эту логику в структуру
E.g. если инициализация цикла была 'A'
, это было бы таким же, как начиная с 'A'
. Приращение будет затем обновлять это значение до 'B'
, 'C'
и т. Д., Поскольку оно выполняется в предположении, что вы используете ++
. Чтобы лучше объяснить это, есть учебные пособия.
Используя имена переменных, которые передают то, что вы пытаетесь сделать, это упрощает сжатие/оптимизацию вашего кода при его написании. Будем надеяться, что SSCCE в конце этого ответа можно выделить преимущества этого, например, строки: int numberOfSpacesNeeded = numberOfRows - rowIndex;
SSCCE:
public class MirrorPrinting {
public static void main(String[] args) {
System.out.print("Enter the numbers of rows you want to print: ");
Scanner scan = new Scanner(System.in);
int numberOfRows = scan.nextInt();
StringBuilder currentRow = new StringBuilder();
for(int rowIndex = 1; rowIndex <= numberOfRows; rowIndex++){
for(char currentCharacter = 'A'; currentCharacter < rowIndex + 'A'; currentCharacter++){
currentRow.append(currentCharacter);
}
int numberOfSpacesNeeded = numberOfRows - rowIndex;
char[] spaces = new char[numberOfSpacesNeeded];
Arrays.fill(spaces, ' ');
System.out.println(currentRow.toString() + new String(spaces) + currentRow.reverse().toString());
//Reset StringBuilder
currentRow = new StringBuilder();
}
}
}
не дает желаемых результатов. –