java - 当使用\n 从字符串中读取 double 值时,扫描仪会出现 InputMismatchException — Java

标签 java string csv java.util.scanner inputmismatchexception

我正在尝试使用扫描仪读取 CSV 文件,但当我尝试读取最后一个 double 值并且 CSV 文件中是否有多行时,我收到了一个 InputMismatchException 异常。我认为这是因为它正在读取\n 作为 double 的一部分。如何让它忽略换行符?

CSV 文件

P1,25,30
P2,10,10

Java

public static ArrayList<MarkEntry> readCSV(File file) {
    ArrayList<MarkEntry> entries = new ArrayList<>();
    try
    {
        Scanner in = new Scanner(file).useDelimiter(",");
        while (in.hasNext())
        {
            String title = in.next();
            double mark = in.nextDouble();
            double outOf = in.nextDouble(); //Program Crashes here
            entries.add(new MarkEntry(title, mark, outOf));
        }
    } catch (FileNotFoundException e)
    {
        System.out.println("File: " + file + " not found");
    }

    return entries;
}

最佳答案

您可以使用多个分隔符:

Scanner in = new Scanner(input).useDelimiter(",|\\r\\n");

注意:在 Linux 上,行结尾只是 \n,因此您可以使用以下代码:

Scanner in = new Scanner(input).useDelimiter(",|\\n");

关于java - 当使用\n 从字符串中读取 double 值时,扫描仪会出现 InputMismatchException — Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40166849/

相关文章:

Java SSL 连接和未知服务器证书警告

c++ - 使用 C++ 在文件中进行字符串搜索/索引

c# - 字符串驻留和referenceEquals

c# - 读取 JSON 文件中的百万个字符时出现异常 [OutOfMemoryException]

python-2.7 - csv.DictReader 是否将文件存储在内存中?

python - 从从表单生成 csv 文件的网站抓取网页 (http ://njdep. rutgers.edu/continuous/data.php)

java - 客户端使用具有用户名 token 安全性的 WSO2 WSAS Web 服务

java - 包是否需要放在 jar 中才能用于 ant 构建脚本

java - SDO API : how to make XSDHelper. 实例是否正确定义带有 <include> 的 XSD 架构?

javascript - 将一组未删节的连续字符串值解析为可用的可索引键值对