2016-12-01 13 views
-2

私は次のコードを記述しました。実行すると[#、#、#、#]の形式で答えが表示されます。私はそれを####(中かっこなし)で表示し、system.out.printを使用しないでください。どういうわけか、結果を1つの変数に格納し、その変数を呼び出すだけです。中括弧なしで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)); 
} 
} 

答えて

1

は、それが

System.out.println(primeFactors(input) 
      .toString().replace("[", "").replace("]", "").replace(",", " "); 

または単に反復処理し、あなたがにして戻り値の型を変更することができます値

+0

を、それはStringBuilderのを使用するには、この方法を行う場合は、推奨される方法 –

0

に基づいたStringBufferと答えを更新しました

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)); 
} 
} 

がJava8 Collectors.joiningを見て、String.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()); 

これでうまくいくはずです。それはimmutableあるStringのではなく、mutableだから

は、追加情報については、私は、文字列を追加する StringBuilderを使用しました。

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(); 
} 
関連する問題