![](/img/trans.png)
[英]Java - How to read a text file with Int's and Strings in the same line
[英]Java how to read a line from a text file that has multiple strings and double values?
我想创建一个程序,该程序从具有三个不同部分的文本文件中读取内容,然后输出名称。 例如,文本文件:
vanilla 12 24
chocolate 23 20
chocolate chip 12 12
但是,由于存在空格,第三行存在一些问题。 到目前为止,我的代码适用于前两行,但随后在第三行上引发了InputMismatchException。 我如何做到这一点,以便它从一行中读取两个单词,然后将其输出? 我的相关代码:
while (in.hasNext())
{
iceCreamFlavor = in.next();
iceCreamRadius = in.nextDouble();
iceCreamHeight = in.nextDouble();
out.println("Ice Cream: " + iceCreamFlavor);
}
在您的输入文件中,字段之间的分隔符由多个空格组成,不是吗? 如果是,则可以简单地使用String对象的split方法。
您读了一行。 您将其拆分以获得String数组。
String[] splitString = myString.split(" ");
第一个元素“ 0”是字符串,其他两个元素可以解析为双精度
可能看起来像:
try (BufferedReader br = new BufferedReader(new FileReader("path/to/the/file.txt"))) {
String line;
while ((line = br.readLine()) != null) {
String[] lineSplitted = line.split(" ");
String label = lineSplitted[0];
double d1 = Double.parseDouble(lineSplitted[1]);
double d2 = Double.parseDouble(lineSplitted[2]);
}
} catch (IOException e) {
e.printStackTrace();
}
您可以使用scanner.useDelimiter更改定界符或使用正则表达式来解析该行。
//sets delimiter to 2 or more consecutive spaces
Scanner s = new Scanner(input).useDelimiter("(\\s){2-}");
查看扫描仪Javadoc中的示例:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.