java文件读取伪无限循环错误

92dk7w1h  于 2021-07-03  发布在  Java
关注(0)|答案(0)|浏览(163)

我试图读入一个hashmap<string,arraylist>,它存储在一个.txt文件中,然后把它放到程序中的一个新hashmap中。当我运行代码时,所有的东西都按应该的方式放置在Map中,读入的键和值都位于它们的正确位置。然而,Map似乎也是无限的。我不得不被迫终止程序,因为它没完没了地打印。当放入word文件时,程序读入的Map大约是半页。然而,输出是超过175页的反复输入。我敢肯定,如果eclipse的控制台没有字符限制的话,它会持续更长的时间。
我将问题隔离到以下内容:

File grammarMap = new File("C:\\Users\\emily\\eclipse-workspace\\markov-chains\\src\\grammarMap.txt");
Scanner scan = new Scanner(grammarMap);
String readGrammar = scan.nextLine();
ArrayList<String> arr = new ArrayList<String>();
int amount = 0;

for(int i = 0; i<readGrammar.length()-3; i++) {
    int start = 0;
    if(readGrammar.substring(i,i+2).equals("{\"")) {
        start = i+2;
    }
    else if(readGrammar.substring(i,i+3).equals("],")) {
        start = i+3;
    }
    else if(readGrammar.substring(i,i+1).equals("=")) {
        temp.put(readGrammar.substring(start,i-2), new ArrayList<String>());
    }
}

for(int i = 0; i < readGrammar.length()-2; i++) {
    int start = 0;
    if(readGrammar.substring(i,i+1).equals("[")) {
        start = i+1;
    }
    else if(readGrammar.substring(i,i+2).equals(" \"")) {
        start= i+2;
    }
    else if(readGrammar.substring(i,i+1).equals("]")) {
        arr.add(readGrammar.substring(start,i-2));
    }
    else if(readGrammar.substring(i,i+2).equals(", ")) {
        arr.add(readGrammar.substring(start,i-2));
    }
}

ArrayList<String> tempArr = new ArrayList<String>();
int count = 0;
for(String key : temp.keySet()) {
    tempArr.add(key);
    count++;
    System.out.println(key + count);
}

for (int j = 0; j < arr.size()-1; j++) {
    if(!temp.containsKey(arr.get(j))) {
        temp.put(arr.get(j), arr);
    }
    else {
        temp.get(arr.get(j)).add(arr.get(j+1));
    }
}

scan.close();

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题