我正在嘗試製作處理「大」文本文件的程序。該文本文件顯示1000行,每個教師工作人員。每行包含名字,姓氏,等級和薪水。試圖從文本文件中讀取double值,但拋出InputMismatchException
鏈接到文本文件: http://cs.armstrong.edu/liang/data/Salary.txt
程序應該算按職級員工的數量,以及每個組的總工資。最後,應該顯示每個組的總工資以及具有給定職位的員工的平均工資。我還沒有完成整個程序,我目前正在確保文本文件被正確讀取。
代碼下面的例子:
package ch12;
import java.util.Scanner;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
public class Chapter_12_E25_ProcessLargeDataSet {
public static void main(String[] args) throws IOException {
int assistantCount = 0;
int associateCount = 0;
int fullCount = 0;
int facultyCount = 0;
double assistantSalary = 0;
double associateSalary = 0;
double fullSalary = 0;
double facultySalary = 0;
try {
URL url = new URL("http://cs.armstrong.edu/liang/data/Salary.txt");
Scanner input = new Scanner(url.openStream());
while (input.hasNext()) {
String firstName = input.next();
String lastName = input.next();
String rank = input.next();
double salary = input.nextDouble();
if (rank.contains("assistant")) {
assistantCount++;
System.out.println("Rank is " + rank + " and salary is " + salary);
} else if (rank.contains("associate")) {
associateCount++;
System.out.println("Rank is " + rank + " and salary is " + salary);
} else {
fullCount++;
System.out.println("Rank is " + rank + " and salary is " + salary);
}
}
input.close();
}
catch (MalformedURLException ex) {
ex.printStackTrace();
System.exit(1);
}
catch (FileNotFoundException ex) {
ex.printStackTrace();
System.exit(2);
}
}
}
double salary = input.nextDouble()
導致InputMismatchException
線。如果我將可變工資更改爲String
而不是double
,則可正確讀取工資。如果我將double salary = input.nextDouble()
更改爲double salary = Double.parseDouble(input.next())
,我會得到正確的double
值。它不會打擾我使用這種方法,但我只是好奇爲什麼scanner
不接受工資作爲double
價值。
任何人都可以請解釋爲什麼嗎?
此外,這是一個偏題的子問題。如果我將URL object
的參數中的文件名Salary.txt更改爲不存在的文件,則FileNotFoundException
中的catch statement
nr2不會拋出,而是拋出InputMismatchException
。爲什麼拋出InputMismatchException
而不是FileNotFoundException
?
什麼是您的語言環境和什麼是小數點分隔符? – Tunaki
我住在挪威,但我沒有設置任何特定的區域或小數分隔符。 – Esben86
你可以看看這個問題嗎? http://stackoverflow.com/questions/17150627/scanner-double-value-inputmismatchexception – Tunaki