我讀的,看起來像這樣的交易文件:的Java NoSuchElementException異常使用字符串標記
1112, D
4444, A, Smith, Jones, 45000, 2, Shipping
6666, U, Jones
8900, A, Hill, Bill, 65000, 0, Accounting
當我嘗試讀取線使用文件行「」令牌,該方案炸彈帶出第一條記錄處出現NoSuchElementException錯誤。我推斷出我正在閱讀文件的條件導致了這個問題,特別是在下面的while循環中。我試過使用「if」語句並將條件設置爲「while(st2.hasMoreTokens)」和兩者的組合,但錯誤仍然存在,我不確定爲什麼?提前感謝您的幫助。這是代碼如下:
Scanner transactionFile = new Scanner (new File(fileName2));
for (int i = 0; i < T_SIZE; i++) {
line2[i] = transactionFile.nextLine();
transaction[i] = new Transaction();
st2 = new StringTokenizer(line2[i], ", ");
transaction[i].setEmployeeID(Integer.parseInt(st2.nextToken()));
transaction[i].setAction(st2.nextToken());
while ((transaction[i].getAction() != "D")) {
transaction[i].setLastName(st2.nextToken());
transaction[i].setFirstName(st2.nextToken());
transaction[i].setSalary(Integer.parseInt(st2.nextToken()));
transaction[i].setNumOfDependants(Integer.parseInt(st2.nextToken()));
transaction[i].setDepartment(st2.nextToken());
}
}
可能的重複[如何比較Java中的字符串?](http:// stackoverflow .com/questions/513832/how-do-i-compare-strings-in-java) –
@SotiriosDelimanolis:不是su重新如何這是一個字符串比較問題?正如我之前解釋過的,我已經使用了其他幾個條件(即「while(st2.hasMoreTokens)」或「while((st2.nextToken)!= null)」,所有結果都是相同的 – user3315213
@ user3315213這個比較(transaction [ i] .getAction()!=「D」)將可能總是返回true,我認爲這就是Sotirios的意思,你應該將Strings與equals相比較 – xp500