亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 287 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號