2015-04-03 49 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(" ");。我相信它会有所帮助。