2013-10-29 63 views
-3

我正在製作一個打印出來的程序,如果一個數字是素數,而它之前的素數,我有一個問題。我有:奇怪的「如果!=」Java錯誤

if(i != 2){ System.out.println(primes[i] + ", "); else System.out.println(primes[i] +  "."); 

如果數字是2,它應該顯示「2」。但相反,它將任何數字以3結尾的期間,什麼是錯的? :P 這裏是我的代碼

package me.Jesse.PrimeCalc; 

import java.util.Scanner; 

public class PrimeArrayCalculator { 

public static void main(String[] args){ 
    Scanner scan = new Scanner(System.in); 
    int primeCounter = 0; 
    int arrayCounter = 0; 
    int[] primes; 
    int input; 

    System.out.println("Please Enter A Number."); 
    input = scan.nextInt(); 
    System.out.println("Calculating Results... (This may take a while!) "); 
    System.out.println(""); 
    if(isPrimeMethod.isPrime(input) == true){ 
     System.out.println(input + " Is Prime!"); 
     System.out.println("Calculating The Prime Numbers Before " + input + "..."); 
     System.out.println(""); 
    }else{ 
     System.out.println(input + " Is Not Prime."); 
     System.out.println("Calculating The Prime Numbers Before " + input + "..."); 
     System.out.println(""); 

    } 



    for (int i = input; i <= input; i--){ 
     if(isPrimeMethod.isPrime(i) == true){ 
      primeCounter++; 
     } 
    } 

    primes = new int[primeCounter++]; 

    for (int i = input; i <= input; i--){ 
     if(isPrimeMethod.isPrime(i) == true){ 
      primes[arrayCounter] = i; 
      arrayCounter++; 
     } 

    } 
    System.out.println("Here Are All The Prime Numbers Before " + input + ":"); 
    System.out.println(""); 
    for (int i = 0; i <= primeCounter; i++){ 
     try{ 
      if (primeCounter != 2) 
       System.out.println(primes[i] + ","); 
       else 
       System.out.println(primes[i] + "."); 
     }catch(ArrayIndexOutOfBoundsException e){ 
     // Yes I know the program trys to print from two invalid array index's. Try/Catch FTW. 
     } 

    } 
} 
    } 
+0

您的代碼段和您的實際代碼不同 – Blender

回答

0

我不知道是什麼問題你問,但這個應該怎麼辦呢?

for (int i = input; i <= input; i--){ 
     if(isPrimeMethod.isPrime(i) == true){ 
      primeCounter++; 
     } 
    } 

是什麼讓這個循環永遠停止?

+0

'if(isPrimeMethod.isPrime(i))'。請。 '== true'看起來很難看。 :/ – nhgrif

0

好吧,有很多可以簡化的代碼,但這不是問題。

在這種情況下,i是數組的索引,而不是質數的實際值。相反,您應該檢查:

if(primes[i] != 2) 
    System.out.println(primes[i] + ", "); 
else 
    System.out.println(primes[i] + "."); 
+0

感謝Htech,你回答了我的問題,是的......我知道許多可以簡化,但我剛剛開始學習約1個月前:P – user2930296