2016-12-01 86 views
-2

我寫了下面的代碼,當我運行它時,它以[#,#,#,#]的形式顯示答案。我希望它顯示爲####(沒有大括號和逗號),並且不使用system.out.print。不知何故,我想將結果存儲在一個變量中,並調用該變量。如何顯示沒有大括號的ArrayList的元素

import java.util.Scanner; 

import java.util.ArrayList; 

public class trial 

{ 

static Scanner keyboard = new Scanner(System.in); 

public static ArrayList<Integer> primeFactors(long number) 

{ 

     long n = number; 
     ArrayList<Integer> factors = new ArrayList<Integer>(); 
     for (int i = 2; i <= n; i++) 
     { 
      while (n % i == 0) 
      { 
       factors.add(i); 
       n /= i; 
      } 
     } 

     return factors; 

} 
public static void main(String[] args) 
{ 
    System.out.println("Enter phone number to be factored"); 
    long input = keyboard.nextLong(); 

    System.out.println(primeFactors(input)); 
} 
} 

回答

0

您可以改變返回類型primeFactors方法上的字符串。然後循環ArrayList並將內容添加到String中,如下所示。

package src.main; 

import java.util.Scanner; 

import java.util.ArrayList; 

public class sampleMain 

{ 

static Scanner keyboard = new Scanner(System.in); 

public static String primeFactors(long number) 

{ 

    long n = number; 
    ArrayList<Integer> factors = new ArrayList<Integer>(); 
    for (int i = 2; i <= n; i++) { 
     while (n % i == 0) { 
      factors.add(i); 
      n /= i; 
     } 
    } 
    StringBuffer output = new StringBuffer(); 
    for (Integer integer : factors) { 
     if(output.length()==0){ 
      output.append(integer.toString()); 
     }else{ 
      output.append(", "+integer.toString()); 
     } 
    } 
    return output.toString(); 

} 

public static void main(String[] args) { 
    System.out.println("Enter phone number to be factored"); 
    long input = keyboard.nextLong(); 

    System.out.println(primeFactors(input)); 
} 
} 

更新基於評論

+0

如果這樣做的方式,更好地使用StringBuilder –

0

用StringBuffer的答案看一看Java8 Collectors.joiningString.join方法,你可以遍歷列表,並打印您使用Collectors.joining

需要

List<String> strs = Arrays.asList("a", "b", "c", "d", "e"); 
String str = strs.stream().collect(Collectors.joining(" "))); 

甚至只是

String s = String.join(" ", primeFactors); 

或使用StringBuilder

StringBuilder sb = new StringBuilder(); 
for (E e : primeFactors) { 
    sb.append(e).append(" "); 
} 
String ret = sb.toString().trim(); 

輸出

a b c d e 
0

嘗試迭代值在ArrayList並將其追加到一個StringBuilder。像這樣:

StringBuilder oneStringValue = new StringBuilder(); 
    for(Integer tempNum : primeFactors(input)) { 
     oneStringValue.append(tempNum.toString()); 
    } 
    System.out.println(oneStringValue.toString()); 

這應該有效。

爲了增加信息,我以前StringBuilder追加字符串,因爲它是mutable,而不是Stringimmutable

0

只需使用每個循環:

public static void main(String[] args) { 
    Scanner keyboard = new Scanner(System.in); 
    System.out.println("Enter phone number to be factored"); 
    long input = keyboard.nextLong(); 
    ArrayList<Integer> arr = primeFactors(input); 
    for(int a:arr){ 
     System.out.print(a+" "); 
    } 
    keyboard.close(); 
}