2015-09-17 3 views
4

У меня есть программа, которая вводит пользователя и печатает, что многие палиндромные простые числа (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] + " "); 
     } 
    } 

ответ

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) выравнивается влево.

+0

Ой спасибо, что была глупая ошибка хаха Но она по-прежнему печатает неравномерно:/ –

+1

Другим вариантом форматирования является просто добавить \ t или два. System.out.print (palPrimes [i] + "\ t"); – M3SSYM4RV1N

+0

Вы кровавый гений. –

0

Увеличение количества как count++ для цикла while. Если вы хотите напечатать равномерно затем использовать:

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

Здесь «-5d» Выровнять по левому краю с 5 места для всех цифр

Смежные вопросы