从文本文件中读取值并分离为字符串和双精度值
我与我的代码有这个错误:线程“主”java.util.InputMismatchException异常
我知道错误的原因,整个行被转换成一个字符串,但我不确定如何解决它。 我已经尝试阅读定界符**异常在线程“主”java.util.InputMismatchException **如何在Java扫描器中使用分隔符?
但对我的理解水平来说,这听起来太复杂了。
我的代码:
import java.util.*;
import java.io.*;
public class POSmain{
public static void main(String[] args)throws Exception {
其他代码
//create 3 collections to store input, with scanners to extract input
Map<String, Double> products = new TreeMap<String, Double>();
Scanner stock = new Scanner(new File("prices.txt"));
我尝试使用分隔符时失败
//Delimiter to remove whitespace
stock.useDelimiter("s*[a-z]s");
更多的代码
//populate each collection with while loops
while(stock.hasNext()){
tempString = stock.nextLine();
tempdouble = stock.nextDouble();
products.put(tempString,tempdouble);
}
stock.close();
试图阅读这个文件:
TV 999.99
Table 199
Bed 499.99
Chair 45.49
Milk 3.00
Butter 2.84
Tomato 0.76
Onion 0.54
Lettuce 1.00
Ham 2.50
Bread 1.75
我不会更改或删除文件中的空格。 我非常感谢任何关于如何提取价值观的帮助或建议。 我很乐意根据要求提供更多的代码,但我希望这是所有必需的。 再次感谢,我感谢我得到的任何帮助。
从文件的外观来看,你的分隔符是标签和空格的组合(项目名称和数字之间的分隔字符),或者每行结尾的换行符。
在这种情况下,你的分隔符应该是s+
,意思是一个或多个空格字符。 所以你的代码应该看起来像这样:
Map<String, Double> products = new TreeMap<String, Double>();
Scanner stock = new Scanner(new File("prices.txt"));
stock.useDelimiter("s+");
while (stock.hasNext()) {
tempString = stock.nextLine();
tempdouble = stock.nextDouble();
products.put(tempString,tempdouble);
}
stock.close();
我用类似于IntelliJ上面的代码测试了你的输入文件,它似乎正在工作。
usedelimite()方法设置Scanner对象的分隔符。基本上它由Scanner对象用来标记字符串。它基本上用于处理文件。 有关Scanner useDelimiter()
方法的更多详细信息,请参阅下面的链接,
Java中的扫描器
链接地址: http://www.djcxy.com/p/78343.html上一篇: Reading values from a text file and separating into String and double