在Java中编辑String Boolean和Integer的ArrayList

时间:2015-01-30 15:39:09

标签: java arraylist

我为我的编码课做了一项任务,我完成了大部分工作,但我不知道如何完成最后一部分。

这是作业"为植物苗圃创建一个植物类,它有五个与植物相关的属性:

Maximum Height in feet
Common name
Scientific name
Price
Whether or not it is fragile.

为类Plant创建两个您自己选择的方法。 允许用户从控制台创建Plant对象。创建工厂对象后,将对象添加到Plants的ArrayList。

允许用户编辑有关已输入的工厂对象的任何信息。

...还有10个额外学分!允许用户查看按价格(从最低到最高)排序的植物,科学名称(按类别按字母顺序排列)或通用名称(按第一个单词的首字母按字母顺序排列)。 作业是个人的。"

我的代码

    class nursery{

    private int height;
    private String cName;
    private String sName;
    private int cost;
    private boolean fragile;

    public nursery(int height, String cName, String sName, int cost, boolean fragile)
    {
        this.height=height;
        this.cName=cName;
        this.sName=sName;
        this.cost=cost;
        this.fragile=fragile;
    }
}

public class Nursery {




    public static void main(String[] args) {

        ArrayList<nursery> plant = new ArrayList<>();

        Scanner s = new Scanner(System.in);

        while(true){
            //get the plant varibles
            System.out.println("Enter the common name of the plant: ");
            String cName = s.next();
            System.out.println("Enter the scientific name of the plant: ");
            String sName = s.next();
            System.out.println("Enter the height of the plant: ");
            int height = s.nextInt();
            System.out.println("Enter whether the plant is fragile or not: ");
            boolean fragile =s.nextBoolean();
            System.out.println("Enter the price of the plant: ");
            int cost=s.nextInt();
            //add to the arraylist
            nursery Plant = new nursery(height, cName, sName, cost, fragile);
            plant.add(Plant);
            System.out.println("If u would like to stop entering press q.");
            String quit = s.next();
            //quit out if wanted
            if(quit.equals("q")||quit.equals("Q"))
            break;
        }



    }

}

我不知道该怎么做是#34;允许用户编辑有关已输入的工厂对象的任何信息。&#34;我尝试过搜索,但我一直无法得到答案。

1 个答案:

答案 0 :(得分:1)

您已将所有nursery个对象(星球)保存到ArrayList<nursery> plant,因此您需要做的只是从列表中找到它并重置其值。

一般的例子可能是:

nursery plant_to_update = null;
for (int i=0; i<plant.length; i++){
    current_plant = plant.get(i);
    // say user want to update planet with cName as 'planet 1'
    if(plan_to_update.cName == "planet 1"){ 
        plant_to_update = current_plant;
        break;
    }
}
if( plant_to_update != null){
    // update planet 1 with new value
    plant_to_update.setHeight(50);
    plant_to_update.setCost(60);
}

并在nursery类中添加setter以更新这些私有成员

public void setHeight(int height){
    this.height = height;
}

public void setCost(int cost){
    this.cost = cost;
}