为了账号安全,请及时绑定邮箱和手机立即绑定

JAVA:从txt文件中读取行并创建一个对象

JAVA:从txt文件中读取行并创建一个对象

一只斗牛犬 2022-06-15 16:30:28
我是计算机科学专业的新学生,我必须创建一个库存程序,以这种格式从 txt 文件中读取有关产品的信息:部门;计量单位;数量;价格;唯一代码;名称;(例如:E;U;20;1,50;87678350;Lamp)。随后我必须: - 计算库存的总价值 - 产品的销售 - 产品的插入 - 通过唯一代码搜索产品。如果存在具有相同唯一代码的行,则程序将报告错误。我设法读取了 txt 文件中的行,但我不知道如何从中计算股票的总值。public class Emporium{public static void main (String[]args) throws IOException  {Scanner input = new Scanner(new File("EMPORIUM.txt"));    input.useDelimiter(";|\n");     Product[] products = new Product[0];    while(input.hasNext()) {        String department = input.next();        String unit=input.next();        int quantity=input.nextInt();        double price=input.nextDouble();        long code=input.nextLong();        String name=input.next();        Product newProduct = new Product(department,unit,quantity,price,code,name);           products= addProducts(products,newProducts);    }    for (Product product: products) {        System.out.println(product);    }}private static Product[] addProduct(Product[] products, Product  productToAdd) {    Product[] newProducts =new Product[products.length+1];    System.arraycopy(products,0,newProducts,0, products.length);    newProducts[newProducts.length-1]= productToAdd;    return newProducts;}public static class Product {protected String department;protected String unit;protected int quantity;protected double price;protected long code;protected String name;private static NumberFormat formatter = new DecimalFormat("#0.00");public Product(String dep,String uom,int qnt,double prz,long cod,String nm) {    department=dep;    unit=uom;    quantity=qnt;    price=prz;    code=cod;    name=nm;}@Overridepublic String toString() {    return  String.format(department+";"+unity+";"+quantity+";"+formatter.format(price)+";"+code+";"+name);}   }   }我的问题是:如何读取文件中产品的价值并将其与其他产品的价格相加?这意味着我需要对唯一代码执行相同操作才能找到特定产品。非常感谢您的帮助。
查看完整描述

2 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

正确的方法是在您的产品类中使用 Getter 和 Setter。


正如您在代码中看到的那样,您只需传入变量并在构造函数中初始化它们,但使用 getter 和 setter 初始化它们会更好,因为这是一种很好的编程实践,并为您的代码添加了更多功能。


例子


public static class Product {


    protected String department;

    protected String unit;

    protected int quantity;

    protected double price;

    protected long code;

    protected String name;


    private static NumberFormat formatter = new DecimalFormat("#0.00");


    public Product(String dep,String uom,int qnt,double prz,long cod,String nm) {


    setDep(dep);

    setUom(uom);

    setQnt(qnt);

    setPrz(prz);

    setCod(cod);

    setNm(nm);

    }


    public void setPrz(double prz){

       this.price = price;

    }


    //Other setters


    public double getPrz(){

       return price;

    }


    //Other getters

    @Override

    public String toString() {

        return  String.format(department+";"+unity+";"+quantity+";"+formatter.format(price)+";"+code+";"+name);

    } 


}

使用 Products 类中的 getter 和 setter,您可以:

  1. 创建一个方法来计算 ArrayList 中所有产品的总和

  2. 使用您的唯一标识符在您的阵列中搜索特定产品

  3. 按变量对您的 Arraylist 进行排序,可以是部门、价格等。


查看完整回答
反对 回复 2022-06-15
?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

您已经将您的产品读入一个数组,您需要遍历该数组并price * quantity为每个数组相加。

例如...

double totalValue = Arrays.stream(products).mapToDouble(p -> p.quantity * p.price).sum();

这将遍历每个产品并将每个产品映射到双倍(即该产品的数量乘以该产品的价格),然后将所有这些结果相加。


查看完整回答
反对 回复 2022-06-15
  • 2 回答
  • 0 关注
  • 322 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号