为什么文件读取的是一行的最后一行和第二行的第一行

使用带有逗号分隔符的扫描仪读取 Excel CSV 文件时,它会读取第一行的最后一个节点,但同时也会读取下一行的第一个节点。


            int counter = 0;

            String[] u = new String[3];

            for (int j = 1; j <= 3; j++) {

                String a = in.next();

                u[counter] = a;

                counter++;

            }

        }

使用 Debugger 后,我注意到当它到达最后一个元素时,它将它们组合在一起,形成类似 -14256\r\n-14323 的东西


-14256 = 第一行的最后一个元素 -14323 = 下一行的第一个元素


蝴蝶刀刀
浏览 203回答 2
2回答

慕丝7291255

扫描仪仅将逗号作为分隔符。但是您希望它也接受行尾作为另一个分隔符。我假设您像这样实例化 Scanner,使用Scanner::useDelimiter:Scanner&nbsp;s&nbsp;=&nbsp;new&nbsp;Scanner(&nbsp;inputStream&nbsp;).useDelimiter(&nbsp;","&nbsp;);如果我得到正确的模式定义,它应该是:Scanner&nbsp;s&nbsp;=&nbsp;new&nbsp;Scanner(&nbsp;inputStream&nbsp;).useDelimiter(&nbsp;",|\\R"&nbsp;);\R 代表Linebreak matcher:任意Unicode换行序列,等同于\u000D\u000A|[\u000A\u000B\u000C\u000D\u0085\u2028\u2029]java.util.regex.Pattern有关详细信息,请参阅文档。

一只甜甜圈

CSV 文件包含文本行,其中每行包含以逗号分隔的值。因此,我建议您逐行阅读文件,然后用逗号分隔每一行。就像是...java.io.FileReader fr = new java.io.FileReader("path to file");java.io.BufferedReader br = new java.io.BufferedReader(fr);String line = br.readLine();while (line != null) {&nbsp; &nbsp; String[] fields = line.split(",");&nbsp; &nbsp; // Add code here to handle the "fields".&nbsp; &nbsp; line = br.readLine();}请注意,上面的代码不是一个完整的解决方案,而是一个起点。例如,我没有关闭BufferedReader.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java