Java - 垂直整数和回文

时间:2016-04-02 13:13:58

标签: java palindrome vertical-text

我偶然发现了一个让我重现这个的练习(这是预期的输出):

       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 个答案:

答案 0 :(得分: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只是一个占位符。在打印方面,我们可以打印空格而不是零。