不知道哪里出了错,找了1个多小时了,也没找到,哪位大侠帮忙找一下,小弟在此谢过了
题目:从英文文本文件中读取所有内容,print 所有2次及以上的单词

解决方案 »

  1.   

    code
    import java.io.*;
    import java.util.HashSet;
    import java.util.Iterator;
    import java.util.Set;
    import java.util.regex.Pattern;
    public class Test {
    public static void main(String[] args) {
    int b = 0;
    String s = "1";
    int n = 0;
    String[] d = new String[50000];
    Set<String> strings = new HashSet<String>();
    try {
    BufferedReader br = new BufferedReader(new FileReader("d://test.txt"));
    try {
    while((s = br.readLine())!= null) {

    int m = 0;
    char[] ch = s.toCharArray();
    for(int i=0; i<s.length(); i++) {

    if(ch[i] == ' ' || ch[i] == ',' || ch[i] == '.') {
    String string = "";
    for(int j=m; j<i; j++) {

    string = string + ch[j];
    }
    m = i + 1;
    d[n] = string;
    n++;
    }
    }
    }
    for(int i=0; i<d.length; i++) {

    for(int j=0; j<d.length; j++) {
    if((i != j) && d[i] == d[j]) {
        strings.add(d[i]);
    break;
    } }
    }
    Iterator<String> it = strings.iterator();
    while(it.hasNext()) {
    System.out.println(it.next());
    }
    /*String[] d = null;
    d = c.split(",",0);
    for(int i=0; i<d.length; i++) {
    System.out.print(d[i]);
    }
    System.out.println();*/

    br.close();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    } catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }
      

  2.   

    如果对英文,你做的太麻烦了,其实用正则表达式进行切分得到单词应该是比较合适的
    有点麻烦的是txt文本文件换行情况的处理,对-这样的连词符需要特殊处理一下拼接处理每一行的结尾与开头的单词如果对于汉语就没有单词这样一说了吧
      

  3.   


    for(int j=0; j<d.length; j++) {
    if((i != j) && d[i] == d[j]) { //d[i] == d[j]有问题,这样即使得到所有的东西也不能判等。
                                                               //== 判断的是内存位置,换成d[i].equals(d[j])
    strings.add(d[i]);
    break;
    }这里的判断是有问题的,讲d[i] == d[j]换成d[i].equals(d[j])