Java - вертикальные целые и палиндром

Я наткнулся на упражнение, которое попросило меня воспроизвести это (это ожидаемый результат):

       11111
3456789012109876543

Это палиндром (внизу), где числа выше 9 (двойные цифры) должны быть написаны вертикально. Это звучит сложно для меня, и мне нужна была помощь.

Это то, что я до сих пор делал, палиндром:

  class Print {
  public static void main(String[] args) {  
    System.out.println("Insert a number from 1 to 100: ");
    int input = Read.anInt();
    System.out.println("Insert another number from 1 to 100: ");
    int output = Read.anInt();    
     int a = input;    
     for (int i = a; i < output; i++){
            System.out.print(a);
            a++;
       }
     a = input -1;    
     for (int j = output; j > a; j--){
            System.out.print(output);
            output--;
       }    
  }
}

Не могли бы вы помочь мне объяснить, как сделать так, чтобы числа, превышающие 9, были написаны вертикально?

AdamRice: я имею в виду это:

3456789111119876543
       01210

Но что мне удалось сделать, так это беспорядок:

 456789101
0
111
1
121110987654

Это все, вероятно, потому что я полностью игнорирую массивы.

1 ответ

Решение

Извиняюсь за то, что был немного медленным. После окончательного понимания проблемы, я думаю, у меня есть решение.

import java.util.Scanner;

public class VerticalText {

    public static void main(String[] args) {

        Scanner Read = new Scanner(System.in);
        System.out.println("Insert a number from 1 to 100: ");
        int start = Read.nextInt();
        System.out.println("Insert another number from 1 to 100: ");
        int end = Read.nextInt();

        String numbers = "";

        for(int i = start; i <= end; i++)
        {
            if(i < 10)
            {
                numbers += String.format("%02d", i);
            }
            else
            {
                numbers += i;
            }
        }

        for(int i = (end-1); i >= start; i--)
        {
            if(i < 10)
            {
                numbers += String.format("%02d", i);
            }
            else
            {
                numbers += i;
            }
        }

        String row1 = "";
        String row2 = "";

        char[] chars = numbers.toCharArray();

        for(int i = 0; i < chars.length; i++)
        {
            if(chars[i] == '0')
            {
                chars[i] = ' ';
            }
            row1 += chars[i];
            i++;
            row2 += chars[i];
        }

        System.out.println(row1);
        System.out.println(row2);
    }
}

Со входами 5 и 15 он выдает следующий вывод:

     11111111111     
567890123454321098765

Пояснение Я строю строку из чисел и, если ее меньше 10, форматирую ее с начальным 0. Этот дополнительный 0 является просто заполнителем. Когда дело доходит до печати, мы можем напечатать пробел вместо нуля.

Другие вопросы по тегам