2015-09-17 25 views
0

我的任務我想有一個用戶輸入項目的名稱和價格。但是,他們將無限次地輸入,直到使用警戒值。我實際上並不知道如何去做這件事。我知道如何用用戶輸入聲明對象的唯一方法是使用掃描器,然後將這些數據放入構造函數的參數中。但那隻會創建一個對象。謝謝!Java:我如何用用戶輸入的數據聲明未定義數量的對象?

import java.util.Scanner; 
public class Item 

{ 

public static void main(String[] args) { 
    Scanner input = new Scanner(System.in); 



} 

private String name; 
private double price; 

public static final double TOLERANCE = 0.0000001; 

public Item(String name,double price) 
{ 
    this.name = name; 
    this.price = price; 
} 

public Item() 
{ 
    this("",0.0); 
} 

public Item(Item other) 
{ 
    this.name = other.name; 
    this.price = other.price; 
} 

public String getName() 
{ 
    return name; 
} 

public double getPrice() 
{ 
    return price; 
} 

public void setName(String name) 
{ 
    this.name = name; 
} 

public void setPrice(double price) 
{ 
    this.price = price; 
} 

public void input(String n, double item) 
{ 

} 

public void show() 
{ 
    // Code to be written by student 
} 

public String toString() 
{ 
    return "Item: " + name + " Price: " + price; 
} 

public boolean equals(Object other) 
{ 
    if(other == null) 
     return false; 
    else if(getClass() != other.getClass()) 
     return false; 
    else 
    { 
     Item otherItem = (Item)other; 
     return(name.equals(otherItem.name) 
      && equivalent(price, otherItem.price)); 
    } 

} 

private static boolean equivalent(double a, double b) 
{ 
    return (Math.abs(a - b) <= TOLERANCE); 
} 
} 
+0

您是否已經瞭解了有關列表或數組的知識? – user2864740

+0

不是列表,但我確實瞭解了數組, – Artie

+0

好吧,可以在這裏使用數組,對於可以創建多少項目有一些「限制」。創建一個大小爲1000個元素的數組(即不超級巨大,但超過用戶輸入的數量)。然後還保留一個howManyItemsHaveBeenAdded變量。當您要求使用輸入時(可能使用'while或'do-while循環),從輸入創建對象,然後將其分配給相應的數組元素(在先前添加的項目的末尾)並增加計數器變量。 (如果列表允許,添加可以簡化..) – user2864740

回答

0

據我所知你只想初始化一個obects數組。

首先你需要初始化數組:

int n = scanner.nextInt(); // you may get n in other way 
Item[] items = new items[n]; 

然後你就可以用項目的新實例填充:

for(int i = 0; i < n; i++){ 
    items[i] = new Item(); //constructor args may be here 
} 
0

在Java中添加對象的最佳選擇未定義的數字是List。通過使用你的例子,我在main()方法中添加一些代碼如下:

public static void main(String[] args) { 
     Scanner input = new Scanner(System.in); 


     List<Item> items = new ArrayList<>(); 
     while (true) { 
      System.out.println("--------------------------------"); 
      System.out.print("Enter item name :: "); 
      String name = input.next(); 
      System.out.print("Enter item price :: "); 
      while (!input.hasNextDouble()) { 
       System.err.println("Invalid Price (Double) eg. 300"); 
       System.out.print("Enter item price :: "); 
       input.next(); 
      } 
      double price = input.nextDouble(); 
      Item item = new Item(name, price); //creating object by passing value in constructor 
      items.add(item); //adding object in list 
      System.out.println("Do you want to add more items ? 'Y'=>Yes or 'N'=>No "); 
      String ans = input.next(); 
      if ("N".equalsIgnoreCase(ans)) { 
       break; 
      } 

     } 
     //To retrive item object list 
     for (Item i : items) { 
      System.out.println(i); 
     } 

    } 
相關問題