所以我正在创建一个发票生成器,我需要用户首先说出他们将输入多少项,然后询问项目描述(字符串),金额(int)和价格(int)。我在为这些信息创建数组时遇到了麻烦。到目前为止,我只为这里创建方法:
public static int itemDescription(){
Scanner input=new Scanner(System.in);
String descr = input.nextInt();
return(descr);
}
public static int quantitySold(){
Scanner input=new Scanner(System.in);
int quansold = input.nextInt();
return(quansold);
}
public static int unitPrice(){
Scanner input=new Scanner(System.in);
System.out.println("Unit Price:");
int price = input.nextInt();
return(price);
}
但是如果用户输入的项目不止一个,那么我将需要使用数组,因为这些数据无法存储多个数据。 (我把它们制作成不同的方法,因为我稍后需要单独的信息来计算它们的某些税。)
如何将这些输入函数转换为数组?
提前谢谢
答案 0 :(得分:0)
如何将输入添加到列表中。然后,如果您愿意,您可以将列表转换为数组,但您不必:
mon
值得注意的是 - 你的itemDescription()方法返回一个int而不是一个String。你可能想要改变它。
您还可以创建一个包含所需属性的public void getInfo(int itemCount) {
List<String> descriptions = new ArrayList<String>();
List<Integer> sold = new ArrayList<Integer>();
List<Integer> unitPrices = new ArrayList<Integer>();
for(int i = 0; i < itemCount; i++) {
descriptions.add(itemDescription());
sold.add(quantitySold());
unitPrices.add(unitPrice());
}
}
类。对于每个属性,您希望Item
执行item.getInput()
次!
答案 1 :(得分:0)
首先,我建议创建一个Item
类,以便每个项目的描述,数量和价格可以存储在一个对象中:
public class Item {
String description;
int amount;
int price;
public Item(String desc, int amt, int p) {
description = desc;
amount = amt;
price = p;
}
}
然后,这样的事情应该在你的主要方法中起作用:
Item[] items;
String desc;
int amt;
int price;
Scanner input = new Scanner(System.in);
System.out.print("How many items? ");
while (true) {
try {
items = new Item[input.nextInt()];
break;
} catch (NumberFormatException ex) {
System.out.println("Please enter a valid integer! ");
}
}
for (int i=0; i<items.length; i++) {
// prompt user to input the info and assign info to desc, amt, and p
items[i] = new Item(desc, amt, p);
}
我还想指出,您不需要为每种方法创建单独的Scanner
。如果您希望包含类似于您发布的方法的方法,您应该获取值,然后将它们传递给方法,或者只是将现有的Scanner
传递给方法。
答案 2 :(得分:0)
这是一种方法:
public class Invoice {
int ItemId;
String Description;
int Amount;
int Price;
Invoice(int itemId, String description, int amount, int price){
this.ItemId = itemId;
this.Description = description;
this.Amount = amount;
this.Price = price;
}
public int Get_ItemId() {
return this.ItemId;
}
public String Get_Description() {
return this.Description;
}
public int Get_Amount() {
return this.Amount;
}
public int Get_Price() {
return this.Price;
}
}
....
ArrayList<Invoice> Invoices = new ArrayList<>();
// Add invoice for 2 leather belts of $10 each
Invoices.add(new Invoice(Invoices.size(), "Leather Belt", 2, 10));
....
// Get invoice info
int itemid = Invoices.get(0).Get_ItemId;