使用逗号作为分隔符在文本文件中构造包含数据的对象时遇到问题

Trouble constructing an object with data in a text file using commas as delimiters

我在通过从 txt 文件读取的构造函数创建 Inventory 对象时遇到问题。

这是文件:

1165,4.25,15
1305,1.80,42
1345,12.56,16
1388,7.42,30
1480,6.54,80
1495,8.36,48
1560,15.27,65

所以我试图将“1165”放入第一个变量,然后将“4.25”放入下一个变量,等等。所以逗号是分隔符。当我 运行 我的程序时,它在第一次通过 main 中的 while 循环后抛出异常,并且变量只是被分配为“1”、“1.0”和“6”,而不是获取全部数字.

import java.util.Scanner;
import java.io.*;
import java.util.regex.*;

public class Proj2 {
    public static void main(String[] arg) throws IOException {

        Scanner soldScan;
        Scanner invScan;

        soldScan = new Scanner (new File("SoldSorted.txt"));
        invScan = new  Scanner (new File("Inventory.txt"));
        invScan = invScan.useDelimiter(Pattern.compile(",|\s*"));
        int count =0;
        while (soldScan.hasNext()){

            Sales x = new Sales(soldScan.next());
            Inventory y = new Inventory(invScan.nextInt(),invScan.nextDouble(),invScan.nextInt());

            x.printSales();
            y.printInv();
            count++;
        }
        for (int i=0;i<count;i++){

        }

    }
}
public class Inventory {
    int productCode;
    double price;
    int quantityOnHand;

    public Inventory(int code, double cost, int inStock) {
        productCode = code;
        price = cost;
        quantityOnHand = inStock;
    }

    public void setCode(int code) {
        productCode = code;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public void setInStock(int inStock) {
        quantityOnHand = inStock;
    }

    public int getCode() {
        return productCode;
    }

    public double getPrice() {
        return price;
    }

    public int getInStock() {
        return quantityOnHand;
    }

    public int postSale(int sold) {
        quantityOnHand = quantityOnHand - sold;
        return quantityOnHand;
    }

    public void printInv(){
        System.out.println("Product Code: " + productCode);
        System.out.println("Price: " + price);
        System.out.println("Quantity on Hand: " + quantityOnHand);
    }
}

这是输出:

Product Code: 1165
Quantity Sold: 24
Product Code: 1
Price: 1.0
Quantity on Hand: 6

Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Scanner.java:840)
    at java.util.Scanner.next(Scanner.java:1461)
    at java.util.Scanner.nextInt(Scanner.java:2091)
    at java.util.Scanner.nextInt(Scanner.java:2050)
    at Proj2.main(Proj2.java:18)

您的正则表达式似乎有错误。 * 是 0 个或多个匹配项的通配符,因此“,|\s*”将匹配空字符串。尝试“,|\s+”。