2017-04-30 3 views
-1

Mein Code gib mir einen Index außerhalb der Grenzen, weil der Index = 0 und Größe = 0 Wie kann ich das beheben? Was dieser Code eigentlich tun sollte, ist die Häufigkeit der Buchstaben in der Zeichenkette zu finden und sie alle zusammen in der Arraylist hinzuzufügen. die Array-Liste ist in alphabetischer Reihenfolge bei 0, so dass es die Frequenz für den Buchstaben a darstellen würde ...Wie fülle ich eine arraylist mit nichts, so bekomme ich keinen Index außerhalb der Grenzen Ausnahme

import java.io.*; 
import java.util.*; 

public class Encoding { 
    ArrayList<Integer> frequency; 

public void frequency(String fileName) { 
    frequency = new ArrayList<Integer>(); 
    try { 
     Scanner scan = new Scanner(new File(fileName)); 
     while(scan.hasNextLine()){ 
      String line = scan.nextLine(); 
      Scanner token = new Scanner (line); 
      while(token.hasNext()){ 
       String s = token.next(); 
       countLettersInString(s); 
      } 
     } 
     System.out.println(frequency); 
    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

public void countLettersInString(String s) { 

    int count = 0; 
    int position = 0; 

    s = s.toLowerCase(); 
    for (char i = 'a'; i <= 'z'; i++) { 
     count = 0; 
     for (int j = 0; j < s.length(); j++) { 
      char c = s.charAt(j); 
      if (c == i) 
       count++; 
     } 
     int oldCount = frequency.get(position); 
     frequency.add(position, oldCount+count); 
     position++; 
    } 
} 

}

+1

Sie könnten eine 'Map' anstelle einer' List' verwenden. –

+0

Warum fügen Sie diese Zähler hinzu? –

+0

Füllen Sie es nicht mit nichts, schreiben Sie einfach besseren Code. Überprüfen Sie zum Beispiel, ob 'position> = frequency.size()', wie Sie immer sollten. – Tom

Antwort

0

Was passiert, wenn man versucht, es durch eine Arraylist von Objekten erstellen, die jeden Buchstaben repräsentieren in Das Alphabet und jeder Buchstabe haben eine Häufigkeit, die Sie einfach hinzufügen können, wenn der Buchstabe in der angegebenen Zeichenfolge ist.

Verwandte Themen