gpt4 book ai didi

java - 如果字符串和数字位于同一行,是否可以读取它们(来自 TXT 文件)

转载 作者:行者123 更新时间:2023-12-02 08:41:25 27 4
gpt4 key购买 nike

我很难说出问题的标题。

在我给定的作业中,我需要编写一个程序来读取文本文件。

例如:(这是在文本文件中,数字是商品的价格。)

Cappuccino, 3.50

Espresso, 2.10

Mochaccino, 5.99

Irish Coffee, 7.99

Caffe Americano, 6.40

Latte, 1.99

这是我读取文本文件的代码:

public void readFile(){
while(x.hasNext()){
String item = x.next();
Double price = x.nextDouble();

System.out.printf("%s $%.2f \n", item, price);

}//end of whileLoop
}

public void closeFile(){
x.close();
}

我的输出:

Cappuccino, $3.50
Espresso, $2.10
Mochaccino, $5.99
Exception in thread "main" java.util.InputMismatchException
at java.base/java.util.Scanner.throwFor(Scanner.java:939)
at java.base/java.util.Scanner.next(Scanner.java:1594)
at java.base/java.util.Scanner.nextDouble(Scanner.java:2564)
at ReadTextFile.readFile(MiniProject.java:22)
at MiniProject.main(MiniProject.java:400)

该代码运行良好,并且符合预期,直到它到达包含两个单词而不是单个单词的菜单项。我如何更改代码以在读取价格之前读取两个单词?

这是一个视频,展示了我希望我的程序如何读取该文件 - https://youtu.be/gIMxwKc-pw8

最佳答案

Scanner 类将读取“ token ”。当您调用 nextDouble 时,它将读取一个标记,而不关心它是 double 型还是字符串还是其他什么,然后尝试将其转换为 double 型。如果这有效,那就是你得到的。如果没有,您将收到 InputMismatchException

因此,您想要在这里完成的是爱尔兰咖啡是单个 token (或者可能您的代码已更新以继续读取 token 并将它们连接起来,这听起来更复杂)。此外,那个逗号在你的字符串中,我敢打赌你不希望这样。

扫描程序通过使用分隔符分隔标记来工作。开箱即用的分隔符是“任意数量的空白”(因此,空格和换行符)。

听起来您在这里需要的是重新定义分隔符:它可以是由任意数量的空格包围的逗号,也可以是换行符:

scanner.useDelimiter("(\\s*,\\s*)|\r?\n");

可以完成这项工作。中间的那篇冗长的文章是一个正则表达式。其内容为:[a] 任意数量的空格,然后是逗号,然后是任意数量的空格,或者 [b] 换行符。

关于java - 如果字符串和数字位于同一行,是否可以读取它们(来自 TXT 文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61369599/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com