所以我有一些应该使用jfilechooser的代码获取文本文件使用split和扫描程序,冒号作为分隔符并将数据存储到数组中。代码和文本如下所示。我添加了一段代码来测试数组长度是否小于1,即使我已将其设置为存储在String数组中,它也总是如此。为什么要这样做?我怎样才能将代码的每一行中的文本存储到6个区间的数组中?
else if (e.getSource()==readButton) {
JFileChooser fileChooser = new JFileChooser("Local Disk (C:)");
if (fileChooser.showOpenDialog(null)==JFileChooser.APPROVE_OPTION)
{
empFile=fileChooser.getSelectedFile();
}
Scanner scan = new Scanner("empFile");
while(scan.hasNext()) {
String[] rowData = scan.nextLine().split(":");
if (rowData.length < 1){
System.out.println("error");
}
else if(rowData.length == 5) {
rowData[4] = "0";
fName = rowData[0];
lName = rowData[1];
position2 = rowData[2];
firstParam = Double.parseDouble(rowData[3]);
empNum = Integer.parseInt(rowData[4]);
c.addEmployee(fName, lName, position2, firstParam, 0, empNum);
}
else {
fName = rowData[0];
lName = rowData[1];
position2 = rowData[2];
firstParam = Double.parseDouble(rowData[3]);
secondParam = Integer.parseInt(rowData[4]);
empNum = Integer.parseInt(rowData[5]);
c.addEmployee(fName, lName, position2, firstParam, secondParam, empNum);
}
}
}
约翰:史密斯:制造:6.75:120:444
贝:白色:管理器:1200.00:111
斯坦:粘糊糊:销售:10000.00:332
贝:布普:设计:12.50:50:244
答案 0 :(得分:0)
您的扫描仪正在接收字符串而不是变量。而不是
Scanner scan = new Scanner("empFile");
尝试
Scanner scan = new Scanner(empFile);
来自docs
Scanner(String source) Constructs a new Scanner that produces values scanned from the specified string.
您当前正在扫描字符串“empFile”而不是当前的实际文件。
答案 1 :(得分:0)
问题来自于您在选择任何文件之前尝试使用扫描仪:
if (fileChooser.showOpenDialog(null)==JFileChooser.APPROVE_OPTION)
{
empFile=fileChooser.getSelectedFile();
}
Scanner scan = new Scanner("empFile");
while(scan.hasNext()){
}
相反,您需要更改代码,以便仅在选择文件后才能创建扫描程序
if (fileChooser.showOpenDialog(null)==JFileChooser.APPROVE_OPTION)
{
empFile=fileChooser.getSelectedFile();
Scanner scan = new Scanner("empFile");
while(scan.hasNext()){
}
}