字符串数组不存储来自文本文件的数据

时间:2014-04-26 18:07:37

标签: java arrays split java.util.scanner

所以我有一些应该使用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

2 个答案:

答案 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()){
    }
}