【问题标题】:String array not storing data from text file字符串数组不存储文本文件中的数据
【发布时间】:2014-04-26 18:07:37
【问题描述】:

所以我有一些代码应该使用 jfilechooser 获取文本文件,使用拆分和扫描仪,用冒号作为分隔符并将数据存储到数组中。代码和文本如下所示。我添加了一段代码来测试数组长度是否小于 1,即使我已将其设置为存储在字符串数组中,它也始终如此。为什么要这样做,我怎样才能让它将每行代码中的文本存储到 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

Stan:Slimy:Sales:10000.00:332

贝蒂:Boop:设计:12.50:50:244

【问题讨论】:

  • 为什么在引文中有 empfile?扫描仪 scan = new Scanner("empFile");
  • 你是什么意思?我尝试将其更改为 Scanner scan = new Scanner(empFile);但我遇到了一个错误。
  • 您尝试打开的文件的名称是什么
  • 作业文本 5.txt
  • 好的。制作没有引用的 empfile 并将其他所有内容放在同一个 if 语句中(如果 if 语句无论如何都失败,则不能使用扫描仪

标签: java arrays split java.util.scanner


【解决方案1】:

您的扫描仪正在接收字符串而不是变量。而不是

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”而不是当前的实际文件。

【讨论】:

  • 当我使用 empFile 而不是 empFile 时出现错误
  • 错误提示“未处理的异常类型 FileNotFoundException”
  • 我必须初始化文件 empFile; 吗?
  • 把你的代码放在 try catch 块中,因为文件处理代码属于检查异常,你不能从 try catch 或 throws 中逃脱
  • 我从未见过 try/catch 或 throws 它有什么作用?
【解决方案2】:

问题出现是因为您在选择任何文件之前尝试使用扫描仪:

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

【讨论】:

    猜你喜欢
    • 2016-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-03
    相关资源
    最近更新 更多