打印具有均匀间距

时间:2015-09-17 03:34:01

标签: java arrays

我有一个程序可以接受用户输入并打印出许多回文素数(每行10个并且应该均匀分布)。我是直接打印值,它工作正常,但数字不均匀。因此我决定将它们存储在一个阵列中,希望它们能够均匀地打印出来。但现在没有印刷价值。有人可以指出我弄错了吗?以下是代码的一部分:

public static void main(String[] args)
    {
        Scanner scan = new Scanner(System.in);
        System.out.print("Print how many values? ");
        int input = scan.nextInt();
        int[] palPrimes = new int[input];
        int count = 1, val = 2;

        while(count <= input)
        {
            if(isPrime(val) && isPalindrome(val))
            {
                palPrimes[count-1] = val;
            }
            val++;
        }

        for(int i = 0; i < palPrimes.length; i++)
        {
            if(i % 10 == 0)
                System.out.println();
            System.out.print(palPrimes[i] + " ");
        }
    }

2 个答案:

答案 0 :(得分:3)

添加count或循环永不终止时,您需要增加val

if (isPrime(val) && isPalindrome(val)) 
{
    palPrimes[count - 1] = val;
}
val++;

应该像

if (isPrime(val) && isPalindrome(val)) 
{
    palPrimes[count - 1] = val;
    count++;
}
val++;

最后,为了均匀间隔数字,我建议您使用formatting。像,

for (int i = 0; i < palPrimes.length; i++) {
    if (i % 10 == 0)
        System.out.println();
    System.out.printf("% 5d", palPrimes[i]);
}

或者,正如@m3ssym4rv1n的评论中所指出的,一个或两个标签

System.out.print(palPrimes[i] + "\t");

第一个选项(printf)将对齐;后来(\t)左对齐。

答案 1 :(得分:0)

while循环的递增计数为count++。如果要均匀打印,请使用:

System.out.printf("%-5d", palPrimes[i]);
  

这里&#34; -5d&#34;所有数字左对齐5个空格

相关问题