2015-04-03 110 views
0

我有以下代碼用於幫助我找到1和用戶輸入的任何素數。唯一的問題是,我必須輸出沒有括號和逗號的數字。我怎麼做?如何輸出Arraylist中的數字列表而不輸出括號和逗號?

System.out.println("\nLab1la\n"); 
    Scanner input = new Scanner(System.in); 
    System.out.println("Enter the primes upperbond ==>> "); 
    final int MAX = input.nextInt(); 
    boolean primes[]; 
    primes = new boolean[MAX]; 

    ArrayList<Integer>PrimeFactor = new ArrayList<Integer>(); 
    for (int i = 2; i < MAX + 1 ; i++) 
    { 
     PrimeFactor.add(i); 
    } 


    CompositeNumbers(PrimeFactor); 
    System.out.println("COMPUTING RIME NUMBERS"); 
    System.out.println(); 
    System.out.println("PRIMES BETWEEN 1 AND " + MAX); 
    System.out.print(PrimeFactor); 

} 

public static void CompositeNumbers(ArrayList<Integer> PrimeFactor) 
{ 
    for (int i = 0; i < PrimeFactor.size(); i++) 
    { 
     if (!isPrime(PrimeFactor.get(i))) 
     { 
      PrimeFactor.remove(i); 
      i--; 

     } 
    } 
} 

public static boolean isPrime(int n) 
{ 
    if(n==1) 
    { 
     return true; 
    } 
    for (int i = 2; i < n +1/2; i++) 
    { 
     if (n%i == 0) 
     { 
      return false; 

     } 
    } 
    return true; 

} 

}

+0

也許使用for循環而不是將整個'ArrayList'傳遞給'System.out'? – DigitalNinja 2015-04-03 00:58:15

+0

我不太清楚你的意思,你能解放一點嗎? – Bob 2015-04-03 01:19:50

回答

1

只要輸出反過來的每個值。例如:

// TODO: Rename PrimeFactor to primeFactors to follow Java naming conventions 
for (int value : PrimeFactor) 
{ 
    System.out.print(value); 
    System.out.print(" "); // Or whatever separator you want 
} 

(這將輸出在最後一個額外的空間,擺脫那就是略有繁瑣,但不能太硬...)

或者使用類似番石榴的Joiner類:

System.out.println(Joiner.on(' ').join(PrimeFactor)); 
+0

下面的工作,但我怎麼可以添加,以便它可以輸出「素數」這是CompositeNumbers(PrimeFactor)。所有的輸出是數字2到n。 – Bob 2015-04-03 01:19:05

+0

@Bob:我不明白你的意思。你的問題是如何輸出一個沒有括號和逗號的默認實現的列表內容。如果列表中不包含你想要的數字,這是一個完全不同的問題。 – 2015-04-03 01:23:27

+0

對不起,誤會。我把'CompositeNumbers(PrimeFactor);' 'system.out.println(PrimeFactor)'之前,因爲它給了我素數。我把你的代碼,我似乎只得到什麼ArrayList PrimeFactor會給我。我怎麼會嘮叨代碼,這樣我就可以不用逗號和括號就可以輸出CompositeNumbers值。 – Bob 2015-04-03 01:45:45

0

只需使用System.out.print(" ");。我相信它會有所幫助。