我想将所有输入值传递给数组中的一个元素。我试图使用数组,但不太明白它们如何使用多个输入值。
我已经阅读了Oracle和这里,但没有什么真正脱颖而出,或者他们使用数组列表。
有没有办法封装值,然后将它们存储到数组中?
非常感谢任何帮助。
import java.util.Scanner;
class Mobile
{
private String name;
private int number;
private int quantity;
private double cost;
public Mobile(String name, int number, int quantity, double cost)
{
this.name = name;
this.number = number;
this.quantity = quantity;
this.cost = cost;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public int getNumber()
{
return number;
}
public void setNumber(int number)
{
this.number = number;
}
public int getQuantity()
{
return quantity;
}
public void setQuantity(int quantity)
{
this.quantity = quantity;
}
public double getCost()
{
return cost;
}
public void setCost(double cost)
{
this.cost = cost;
}
public double getValue()
{
return cost*quantity;
}
}
public class MobilePhone
{
public static void main (String args[])
{
String itemName;
int itemNum;
int itemQuan;
double unitCost;
for(int i=0;i<5;i++)
{
Scanner input = new Scanner(System.in);
System.out.print("Enter Item Name: ");
itemName = input.nextLine();
System.out.print("Enter Item Number: ");
itemNum = input.nextInt();
System.out.print("Enter Quantity of Item: ");
itemQuan = input.nextInt();
System.out.print("Enter Price of Single Unit: ");
unitCost = input.nextDouble();
Mobile m = new Mobile(itemName, itemNum, itemQuan, unitCost);
}
}
}
答案 0 :(得分:3)
我的理解是你想把移动设备放入一个长度为5的数组中,每个移动设备输入一个。
所以你要声明一个数组Mobile mobileValues[] = new Mobile[5];
并在收集数据后将每个值放入数组中mobileValues[i] = new Mobile(itemName, itemNum, itemQuan, unitCost);
public static void main (String args[])
{
String itemName;
int itemNum;
int itemQuan;
double unitCost;
Mobile mobileValues[] = new Mobile[5];
for(int i=0;i<5;i++)
{
Scanner input = new Scanner(System.in);
System.out.print("Enter Item Name: ");
itemName = input.nextLine();
System.out.print("Enter Item Number: ");
itemNum = input.nextInt();
System.out.print("Enter Quantity of Item: ");
itemQuan = input.nextInt();
System.out.print("Enter Price of Single Unit: ");
unitCost = input.nextDouble();
mobileValues[i] = new Mobile(itemName, itemNum, itemQuan, unitCost);
}
}
答案 1 :(得分:2)
你在哪里
Mobile m = new Mobile(itemName, itemNum, itemQuan, unitCost);
是你想要将它添加到你的数组或arrayList的地方。
因为您知道自己会经历5次值,所以可以在Mobile[] mobileArray = new Mobile[5];
的顶部添加main
和其他内容。
然后设置mobileArray[i] = new Mobile(...);
答案 2 :(得分:1)
因为在你的代码中你从0到4进行循环,你知道你的数组中有5个元素的静态大小。在这种情况下,您可以使用以下命令声明(在其他变量附近)对象的数组:
Mobile mobileValues[] = new Mobile[5];
然后,当您创建一个新的移动对象时,不是将其分配给变量,而是将其分配给与您所在的数字循环相对应的索引(在代码中由i
跟踪
mobileValues[i] = new Mobile(itemName, itemNum, itemQuan, unitCost);
或者,如果您想保留对象声明(通过任何方式都没有必要),您可以执行以下操作:
Mobile m = new Mobile(itemName, itemNum, itemQuan, unitCost);
mobileValues[i] = m;
既然您知道可以添加的元素数量,那么就没有必要了,但是在更实际的现实世界情况下,您不会知道所需的元素数量,而ArrayList
会更适合为了这。 ArrayList
可以使用以下方式定义(再次由其他变量决定)
List<Mobile> mobileList = new ArrayList<Mobile>();
然后在下面,当您创建对象时,可以使用以下命令将其直接添加到list
:
mobileList.add(mobileValues[i] = new Mobile(itemName, itemNum, itemQuan, unitCost));
这很好用,因为list
在创建它们时不要求你指定显式大小array
。而是根据您添加到它们的元素数量来调整它们的大小。然后,您可以使用array
循环类似于for
循环遍历它们:
for(int i = 0; i < mobileList.size(); i++){
// do stuff here
}
或使用迭代器循环:
for(Mobile m : mobileList){
// do stuff here
}
同样,由于您知道正确的尺寸,因此无需在解决方案中使用list
,但更常见的是需要而不是array
。
答案 3 :(得分:0)
我不确定我是否理解了这个问题,而且我似乎没有在您的代码中看到任何数组或列表。 在任何情况下,您可能要做的一件事是创建一个对象,其中包含要放入数组元素的所有输入。然后将对象放入数组元素中。 类似的东西:
class Token {
Input i1;
Input i2;
...
public Token (Input a, Input b){
i1=a; i2=b;
}
// Getters
}
然后创建一个Token数组,例如:
Token[] t = new Token[10]
t[0]= new Token(a,b);