程序的說明:無限while循環,以及問題閱讀文件
我有我的這個計劃,旨在從 閱讀每一個字一個文件(大單),然後檢查詞語已經存在於保存唯一字詞的 字詞數組中。如果不是,則將單詞 添加到數組末尾,並將+1添加到唯一的字詞計數器以及將 添加到位於相同索引處的計數陣列。如果該單詞已位於數組中的某個位置,則應該找到位置 索引號和 計數陣列中的相同索引號將值增加1。當文件包含更多內容時,它應該執行此操作。我也不允許使用HashMaps。
但是,當程序要讀取文件時,我的程序會進入一個無限的while循環,一眨眼之間,特殊字的數量很容易超過100.000,但它最多應該是5000 ...
下面是代碼:
class Oblig3A{
public static void main(String[]args){
OrdAnalyse oa = new OrdAnalyse();
String filArgs=args[0];
oa.analyseMetode(filArgs);
}
}
class OrdAnalyse{
void analyseMetode(String filArgs){
//Begins with naming all of the needed variables
Scanner input, innfil;
String[] ord, fortelling;
int[] antall;
int antUnikeOrd, totalSum;
PrintWriter utfil;
//Declaring most of them.
input=new Scanner(System.in);
ord=new String[5000];
antall=new int[5000];
antUnikeOrd=0;
totalSum=0;
try{
innfil=new Scanner(new File(filArgs));
//The problem is located here somewhere:
while(innfil.hasNext()){
fortelling=innfil.nextLine().toLowerCase().split(" ");
ord[0]=innfil.next().toLowerCase();
for(int i=0; i<fortelling.length; i++){
for(int j=0; j<5000; j++){
if(fortelling[i].equals(ord[j])){
antall[j]+=1;
System.out.print("heo");
}else{
ord[j]=fortelling[i];
antall[j]+=1;
antUnikeOrd+=1;
}
System.out.println(ord.length);
System.out.println(antUnikeOrd);
}
}
}
innfil.close();
}catch(Exception e){
e.printStackTrace();
}
// Here the program will write all the info acquired above into a file called Oppsummering.txt, which it will make.
try{
utfil=new PrintWriter(new File("Oppsummering.txt"));
for(int i=0; i<antall.length; i++){
totalSum+=antall[i];
}
utfil.println("Antall ord lest: " +totalSum+ " og antall unike ord: "+antUnikeOrd);
for(int i=0; i<ord.length; i++){
utfil.println(ord[i]+(" ")+antall[i]);
}
utfil.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
你的代碼是一個很好的例子,爲什麼即使你的私人項目你應該用英文編碼一切。 ;) – TwoThe
Ouch,我可能應該:P我將編輯註釋 – Makri