我有一个程序可以接受用户输入并打印出许多回文素数(每行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] + " ");
}
}
答案 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个空格