繁体   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