为什么我的程序不识别.txt文件

时间:2016-08-03 16:24:40

标签: java

我尝试制作一个程序,在java中的文本文件中打印前20个频繁的单词,我有3个课程,但我不知道为什么不能编译它帮助我。我告诉你树类只是为了有一个想法:

1) 公共类客户{

public static void main(String[] args) {
    Map<String, Integer> frequencies = new TreeMap<String, Integer>();

    while(file.hasNext()){//Este lazo lee las palabras y crea el TreeMap
        String word= clean(doc.next());
        Integer count = frequencies.get(word);
        if(count==null){
            count = 1;}
        else {
            count = count + 1;
        }
    }
    Object[] Claves =  frequencies.keySet().toArray();
    Object[] Valores = frequencies.values().toArray();
    Par[] par = new Par[frequencies.size()];

    for (int i=0;i<frequencies.size();i++){
        Par p = new Par(Claves[i].toString(),(int) Valores[i]);
        par[i]=p;
    }
    Arrays.sort(par);
    showResult(par);
}
public static void showResult(Par[] arreglo){
    System.out.println("The 20 most frequently words are ");
    for(int i= 0; i<=19; i++){
        System.out.print("Word "+ arreglo[i].Clave + " in " + arreglo[i].Valor + " times.");
    }
}

} 2) 公共类Par实现Comparable {     String Clave;     int Valor;     public int length;

public Par(String clave, int valor){
    this.Clave = clave;
    this.Valor = valor;
}

public int compareTo(Par p) {
        if(this.Valor<p.Valor){
            return 1;
        }
        else if(this.Valor==p.Valor){
            return 0;
        }
        else{
            return -1;
        }           
}

} 3) 公共类ProcessText {

public void reader(Path r){
    String name = clean(file.getName());
        if(file.getName().equals(name + ".txt" || file.getName().equals(name + ".doc" ))){
            try (Scanner sc = new Scanner(r)){
                String doc = "";
                while(sc.hasNextLine()){
                    String linea = (sc.nextLine());
                    doc = doc.concat(linea + "\n");
                }
                sc.close();
            }
        }
}

public static String clean(String s){
    String r = "";
    for (int i=0;i<s.length();i++){
        char c = s.charAt(i);
        if (Character.isLetter(c)){
        r = r + c;
        }
    }
    return r.toLowerCase();
}

}

1 个答案:

答案 0 :(得分:0)

如果这是您拥有的所有代码,您的问题可能是您的main方法永远不会创建名为“doc”或“file”的变量,但您可以在Client的main方法的开头使用它们。

如果你可以分享编译时错误会更有帮助,所以我不能确定这是你的问题。