2016-01-28 2 views
-1

всякий раз, когда я пытаюсь запустить эту программу, она сначала показывает «Верхняя граница премьер-листа?». Вставив целое число и нажав enter, я ничего не вижу. Я хочу, чтобы он отображал некоторые «ложные» значения, но я не могу найти, где проблема. И Java не показывает, где проблема.хочу сделать программу, которая выбирает простые числа. не получается, почему моя программа не работает

import java.util.Scanner; 

public class Lab11 { 

    static int n; 
    boolean [] primedetermine = new boolean [n]; 
    int [] list; 

    public static void main (String[]args) { 
     Scanner in = new Scanner (System.in); 
     System.out.print ("The prime's upper bound? "); 
     int max = in.nextInt(); 
     boolean prime [] = new boolean [max]; 
     computePrimes (prime); 
    } 

    public static void computePrimes(boolean[] primedetermine) { 
     for (int x = 0; x<n; x++) { 
      primedetermine [x] = false; 
     } 
     for (int prm = 2; prm <= n; prm++) { 
      for (int prm2 = 2; prm * prm2 <= 21; prm++) { 
       primedetermine [prm * prm2 -1] = true; 
      } 
     } 
     for (int x = 1; x<=n; x++){ 
      if (primedetermine[x-1] == false); 
       System.out.println(primedetermine[x-1]); 
      } 
     } 
    } 
} 
+2

Вы отлаживали свой код? n всегда будет 0, поэтому ваши петли не будут итерации – Stultuske

+0

Посмотрите [здесь] (http://www.mkyong.com/java/how-to-determine-a-prime-number-in-java/) – Dan

+1

Ваше n значение никогда не инициализируется, такая ошибка не подходит для тех, кто называет себя geniushacker)) –

ответ

1

Вы используете переменную n, которая никогда не инициализирован (так что 0 по умолчанию, и ваши петли никогда не вводятся):

for (int x = 0; x<n; x++) 

вместо n использование primedetermine.length.

Это только одна проблема. primedetermine [prm * prm2 -1] выдаст исключение, так как prm * prm2 -1 превысит диапазон массива.

+0

Thankxxxx sooo much !!!!!!!! – geniushacker

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