簡體   English   中英

在Java中使用數組存儲數據

[英]Storing data using Array in Java

問題是我不知道如何從控制台存儲我的輸入。

這是我的代碼:

for (int j = 0; j < arr1.length; j++) {
    System.out.println("");
    System.out.print("Select product code:        ");
    arr1[j] = reader.next();

    if (arr1[j].contains("A001")){
        mouse = 100.00;
        System.out.print("Enter quantity:               ");
        qty = reader.nextInt();
        amount = qty * mouse;
        System.out.print("Amount:\t\t\t    " + amount);
    }
    if (arr1[j].contains("A002")) {
        monitor = 2500.00;
        System.out.print("Enter quantity:               ");
        qty = reader.nextInt();
        amount = qty * monitor;
        System.out.print("Amount:\t\t\t    " + amount);
    }
    if (arr1[j].contains("A003")) {
        keyboard = 200.00;
        System.out.print("Enter quantity:               ");
        qty = reader.nextInt();
        amount = qty * keyboard;
        System.out.print("Amount:\t\t\t    " + amount);
    }
    if (arr1[j].contains("A004")) {
        flashdisk = 300.00;
        System.out.print("Enter quantity:               ");
        qty = reader.nextInt();
        amount = qty * flashdisk;
        System.out.print("Amount:\t\t\t    " + amount);
    }
    if (arr1[j].contains("A005")) {
        harddisk = 1500.00;
        System.out.print("Enter quantity:               ");
        qty = reader.nextInt();
        amount = qty * harddisk;
        System.out.print("Amount:\t\t\t    " + amount);
    }

這是代碼必須是將顯示存儲數據結果的代碼行。

System.out.println("");
System.out.print("Add item (y/n) " );
yn = reader.next().charAt(0);
        
if (yn == 'y' || yn == 'Y') {           
    continue;
}       
else if (yn == 'n' || yn == 'N') {          
    System.out.println("Code\tDescription\tUnit Price\tQuantity\tAmount");
    System.out.print(arr1[j]);
    if (arr1[j].contains("A001")) {
        System.out.print("\tMouse");
        System.out.print("\t\t"+mouse);
        System.out.print("\t\t"+qty);
        System.out.print("\t\t"+amount);
                
        if (arr1[j].contains("A002")) {
            System.out.print("\t\nMonitor");
            System.out.print("\t\t"+mouse);
            System.out.print("\t\t"+qty);
            System.out.print("\t\t"+amount);
        }
    }
}

樣本輸入必須是:

Select product code: A004
Enter quantity: 2
Amount: 800
add item(y/n)?: y

Select product code: A001
Enter quantity: 1
Amount: 100
add item(y/n)?: n

然后它將存儲在一個數組中,這將是結果,但我沒有獲取兩個輸入數組,而是只獲取第二個輸入數組而不是兩個。

Code    Description Unit Price  Quantity    Amount
A001    Mouse       100.0       1           100.0

每次讀取用戶輸入時,接下來都會覆蓋信息,因為您存儲在變量而不是數組中。

創建一個對象,如:

class Product {
  private String code;
  private String name;
  private Long price;
  private Integer amount;

  public Long getPrice();
  public Integer getAmount();
  public void setPrice(Long price) { this.setPrice(price); }
  public void setAmount(Integer amount) { this.setAmount(amount); }
...
}

然后,創建一個Product [] productArr = new Product[anyLength]; 現在,當您檢查輸入是否為 A005 時,您將使用以下信息存儲對象:

if (arr[j].contains("A005")) { 
        Product newProduct = new Product();
        newProduct.setPrice(1500.00);
        newProduct.setCode("A005");
        qty = reader.nextInt();
        amount = qty * newProduct.getPrice();
        newInfo.setAmount(amount);
        productArr[j] = newProduct;
}

然后,當您需要打印它們時,您只需通過索引productArr[j].getAmount()例如。

建議嘗試,但將來如果您想要更好的方法,最好使用 Map<String, Product> 將 A001 映射到您的產品,A002 ..., A003, ... 然后當你需要打印它們,你只是通過鑰匙獲得。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM