java - 在包含字符串和 double 的外部文本文件上使用扫描仪

标签 java hashmap java.util.scanner

编写一个 java 程序来读取包含字符串和双倍价格表的文本文件,并将它们存储在 Hashmap 中。继续在 nextDouble() 行中收到“java.util.InputMismatchException”错误。 代码:

    public static void main(String[] args) throws IOException {

        String priceList = "src/" + args[0];
        String cartOne = "src/" + args[1];
        String cartTwo = "src/" + args[2];
        Scanner priceScan = new Scanner(new File(priceList));
        priceScan.useDelimiter("    ");
        HashMap<String, Double> prices = new HashMap<String, Double>();
        priceScan.useDelimiter(" ");
        while (priceScan.hasNext()) {
            String name = priceScan.next();
            Double price = priceScan.nextDouble();
            prices.put(name, price);

        }
        priceScan.close();
        System.out.println(prices);
    }

文本文件如下:

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

最佳答案

您的映射将字符串映射到字符串,而它应该将字符串映射到 double 。

Scanner priceScan = new Scanner(new File(priceList));
HashMap<String, Double> prices = new HashMap<String, Double>();
while (priceScan.hasNext()) {
    String name = priceScan.next();
    Double price = priceScan.nextDouble();
    prices.put(name, price);
}
priceScan.close();

关于java - 在包含字符串和 double 的外部文本文件上使用扫描仪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40200960/

相关文章:

java - Aerospike数据库设计

java - 选择精细数据结构以从长列表中选取随机键值的更好方法 [HashMap、LinkedHashMap 和 ConcurrentHashMap]

java - 如何获得HashMap中的3个最高值?

java - 当我在我的类中使用 Serialized 并在 Scanner 中使用 transient 时,如何解决 NullPointerException?

java - 阴影最终字段

java - selenium.attachFile(String fieldLocator, String fileLocator) 方法

java - 使用 SCANNER 读取用户输入的行

Java 扫描器故障 : how to skip to the next line?

java - 使用服务帐户为 PUSH 通知创建 Google Drive channel

java - 复制列表而不将其多次链接到原始列表! java