2017-05-01 1 views
1

J'essaie d'écrire un programme qui lit une chaîne de texte et imprime tous les digrammes de ce texte et leurs fréquences.Arrayliste de sortie Chaîne sans parenthèses ni virgules

Exemple d'entrée: park car at the parking lot

sortie correspondante: ar:3 pa:2 rk:2 at:1 ca:1 he:1 in:1 ki:1 lo:1 ng:1 ot:1 th:1

Lorsque je tente cette entrée de l'échantillon, il émet [ar:3, pa:2, rk:2, ca:1, at:1, th:1, he:1, ki:1, in:1, ng:1, lo:1, ot:1]

Comment puis-je résoudre ce problème il a coutume de crochets et des virgules?

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

Vous devez écrire une méthode personnalisée pour ce faire. La méthode 'toString()' de 'ArrayList' est ce qui ajoute les accolades et les virgules. – Logan

Répondre

2

pas la solution la plus efficace, mais cela fera l'affaire.

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

Supposons que 'result.replaceAll (", "," ")', car il a beaucoup de ','. (+ 1) –

+0

chose sûre. bien que les deux feront le travail. –

-1

ligne Remplacer

System.out.println(digrams); 

avec

System.out.println(String.join(" ", digrams));