Java将多个输入值存储到单个数组元素

时间:2015-01-20 21:46:03

标签: java arrays

我想将所有输入值传递给数组中的一个元素。我试图使用数组,但不太明白它们如何使用多个输入值。

我已经阅读了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);
  }
 }
}

4 个答案:

答案 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);