2017-05-01 18 views
1

テキストの文字列を読み込んで、このテキストとその頻度のすべてのdigramを出力するプログラムを作成しようとしています。入力の括弧とカンマなしの出力Arraylist文字列

例:park car at the parking lot

は出力対応:私はこのサンプルの入力をしようとするとar:3 pa:2 rk:2 at:1 ca:1 he:1 in:1 ki:1 lo:1 ng:1 ot:1 th:1

、それがカッコとカンマを持って文句を言わないので、私はこの問題を解決するにはどうすればよい[ar:3, pa:2, rk:2, ca:1, at:1, th:1, he:1, ki:1, in:1, ng:1, lo:1, ot:1]

を出力?

public class Digrams { 

public static void main(String args[]) { 
    Scanner scan = new Scanner(System.in); 

    String str = scan.nextLine(); 

    ArrayList<String> repetition = new ArrayList<String>(); 
    ArrayList<String> digrams = new ArrayList<String>(); 
    String digram; 

    for (int i = 0; i < str.length() - 1; i++) { 
     digram = str.substring(i, i + 2); 
     if (repetition.contains(digram) || digram.contains(" ") || digram.length() < 2) { 
      continue; 
     } 
     int occurances = (str.length() - str.replace(digram, "").length())/2; 
     digrams.add(digram + ":" + occurances); 
     repetition.add(digram); 
    } 

    Collections.sort(digrams, (s1, s2) -> s2.substring(3, 4).compareTo(s1.substring(3, 4))); 

    System.out.println(digrams); 
    } 
} 
+0

とライン

System.out.println(digrams); 

を交換してください。 'ArrayList'の' toString() 'メソッドは角括弧とカンマを追加します。 – Logan

答えて

2

最も効率的な解決策ではありませんが、それは仕事をします。

String result = digrams.toString(); 
System.out.println(result.replaceAll(",","").replace("[","").replace("]","")); 
+1

多くの '、'。(+ 1) –

+0

があるので 'result.replaceAll("、 "、" ")'とします。両方とも仕事をしますが。 –

-1

あなたがこれを行うには、カスタムメソッドを記述する必要があります

System.out.println(String.join(" ", digrams)); 
関連する問題