2016-11-11 52 views
1

我正在创建一个处理汽车经销商的程序。用户有机会通过创建一个随机的3位数字在商店中添加一辆汽车。如何保存数组中所有对象的调用方法的结果?

现在的问题是我如何搜索/删除汽车取决于3位数的代码?

我在想,我需要汽车所有的代码以将它保存在一个数组中,这样我就可以搜索并在之后删除。

我创建了一个类和它的某些方法,我也创建了5个对象,我想看看它是否适用于上述5

这里是随机数的方法:

我使用metritis变量,因为我无法实现正确放置数组上的值,所以我必须给参数1,2,3,4,5,以便我可以将它们正确放置到数组。

package antiprosopeia; 
import java.util.Random; 

public class Antiprosopeia { 

    private String company,colour; 
    private int model,horsePower,speed,price,specialCode,metritis; 
    private int[] codes = new int[]{0,0,0,0,0}; 

    public Antiprosopeia(String company, String colour, int model, int horsePower, int speed, int price) { 
     this.company = company; 
     this.colour = colour; 
     this.model = model; 
     this.horsePower = horsePower; 
     this.speed = speed; 
     this.price = price; 
    } 

    public Antiprosopeia() { 
     company = ""; colour = ""; model = 0; horsePower = 0; speed = 0;   price = 0; 
    } 


    public void setRandomNumber(int metritis) { 
     Random rand = new Random(); 
     int randNum2 = rand.nextInt(900) + 100; 
     specialCode = randNum2; 

     codes[metritis] = specialCode; 
    } 

    public void printarray() { 
     for(int i=0; i<codes.length; i++) { 
      System.out.println(" " + codes[i]);} 
    } 

    public void Info() { 
     System.out.println("Company : " + company + "\nColour : " + colour + "\nModel : " + model + "\nHorse Power : " + horsePower + 
     "\nSpeed : " + speed + "\nPrice : " + price); 
    } 


    public static void main(String[] args) { 

     Antiprosopeia car1 = new Antiprosopeia("Toyota","red",333,100,2223,8000); 
     car1.setRandomNumber(0); 

     Antiprosopeia car2 = new Antiprosopeia("Mercedes","yellow",233,100,2990,9000); 
     car2.setRandomNumber(1); 

     Antiprosopeia car3 = new Antiprosopeia("Volkswagen","green",153,100,2780,6000); 
     car3.setRandomNumber(2); 

     Antiprosopeia car4 = new Antiprosopeia("Mitsubisi","white",678,140,2600,7000); 
     car4.setRandomNumber(3); 

     Antiprosopeia car5 = new Antiprosopeia("Porsche","black",390,1000,2000,30000); 
     car5.setRandomNumber(4);  
    }   
} 

[编辑]现在,当我打电话printarray()方法似乎在我的数组只有一个值是保持和所有其他人正如我在节目开始时定义的阵列zer0s

+0

什么是你的问题? – Heri

+0

你好,问题是,当我打电话给printarray()方法,似乎在我的数组中只有1个值被保存,其余都是0,因为我在我的程序开始时定义了它们 – GioZio

+0

您不能只是“删除“来自阵列。搜索应该是直接的 –

回答

0

如果我这样做,我会使用HashMap。这样你就知道你有一个唯一的3位数字,如果你愿意,你也可以存储更多的数据。你可以这样做:

HashMap<Integer, Car> cars = new HashMap<Integer, Car>(); 

这个例子将允许你把车对象添加到地图中。你不必这样做,但它是一种选择。如果你不想这样做,你可以这样做:

HashMap<Integer, String> cars = new HashMap<Integer, String>(); 

然后执行:

cars.put(123, "Description of car"); 

使用HashMap中存储数据时,会给你更多的选择。这也会阻止你创建一个包含1000个元素的数组,所有这些元素都是0,直到你为它们赋值。你可以很容易做打印出所有你的号码:

for(int number : cars.entrySet()){ 
    System.out.println("My car number: " + number); 
} 

搜索键会非常容易,因为你可以这样做:

String description = cars.getKey(123); 

如果description为null,你就会知道,没有钥匙为了它。

+0

非常感谢。事实是,我不知道如何hastable作品,但现在我会阅读他们,我会使这excersise工作。惊人的解释感谢bro – GioZio

+0

我的荣幸!散列表是一个非常有价值的数据结构。我肯定会阅读他们并了解他们。正如你所看到的,它们很容易使用,并给你很大的灵活性。祝你好运! – BlackHatSamurai

0

你的问题是,每个Antiprosopeia对象有它自己的codes数组。他们不共享。

如果你真的想让每个对象都有一个随机ID,然后在构造函数中赋值。

public class Antiprosopeia { 

    private String company,colour; 
    private int model,horsePower,speed,price,specialCode,metritis; 
    private int randID; 


    public Antiprosopeia(String company, String colour, int model, int horsePower, int speed, int price){ 
     this.company = company; 
     this.colour = colour; 
     this.model = model; 
     this.horsePower = horsePower; 
     this.speed = speed; 
     this.price = price; 
     this.randID = new Random().nextInt(900) + 100; 
    } 

    public Antiprosopeia(){ 
     this("", "", 0, 0, 0, 0); 
    } 

    public int getID() { return this.randID; } 

    @Override 
    public String toString() { 
     return String.format(
      "Company : %s\n" + 
      "Colour : %s\n" + 
      "Model : %s\n" + 
      "Horse Power : %d\n" + 
      "Speed : %d\n" + 
      "Price : %d\n", 
      company, colour, model, horsePower, speed, price 
     ); 
    } 

如果你想打印所有这些对象,

public static void main(String[] args) { 

    List<Antiprosopeia> cars = new ArrayList<Antiprosopeia>(); 

    cars.add(new Antiprosopeia("Toyota","red",333,100,2223,8000)); 
    cars.add(new Antiprosopeia("Mercedes","yellow",233,100,2990,9000)); 

    for (int i = 0; i < cars.size(); i++) { 
     Antiprosopeia c = cars.get(i); 
     System.out.println(c.getID()); 
     System.out.println(c); 
    } 

} 
相关问题