所以我有一个程序,询问(输入)东西(变量int字符串等..),然后那些元素传递给构造函数。但是,每次我输入新值,之前都被覆盖。我怎么做让它创建一个新的而不是覆盖以前的值?我是Java的新手,我有点混淆。看看我的代码:
Scanner scan1 = new Scanner(System.in); //user input the name
System.out.print("name: \n");
String name = scan1.nextLine();
然后将其传递给构造函数:
Balloon aballoon = new Balloon(name);
我的构造函数看起来像
public Balloon(String name){
setName(name);
及其方法
public String thename
public void setName(String name){
if(name.matches("[a-zA-Z]+$")){
thename = name;
}
所以是的,我想知道如何构建多个对象(字符)whitout覆盖前一个,以及如何存储它们(角色)。
谢谢
答案 0 :(得分:1)
您可以使用ArrayList<Balloon>
存储多个Balloon
个对象:
ArrayList<Balloon> baloons = new ArrayList<Balloon>;
//Read name
baloons.add(new Balloon(name));
//baloons now contains the baloon with the name name
有关如何使用ArrayList
课程的详情,请参阅Class ArrayList<E>
。
答案 1 :(得分:1)
我使用类似于以下内容的循环来存储用户想要的所有气球:
List<Balloon> balloonList = new ArrayList<>();
Scanner input = new Scanner(System.in);
String prompt="Name?(Enter 'done' to finish inputting names)";
System.out.println(prompt); //print the prompt
String userInput=input.nextLine(); //get user input
while(!userInput.equals("done")){ //as long as user input is not
//"done", adds a new balloon
//with name specified by user
balloonList.add(new Balloon(userInput));
System.out.println(prompt); //prompt user for more input
userInput=input.nextLine(); //get input
}
对于修改,我假设您希望使用其名称找到气球(IE:如果有人想删除/修改名称为&#34的气球; bob&#34;,它将删除/修改ArrayList中名为&#34; bob&#34;的第一个气球。
对于删除,很简单 - 写一个简单的方法来查找指定的气球(如果它在列表中)并删除它。
public static boolean removeFirst(List<Balloon> balloons, String balloonName){
for(int index=0;index<balloons.size();index++){//go through every balloon
if(balloons.get(index).theName.equals(balloonName){//if this is the ballon you are looking for
balloons.remove(index);//remove it
return true;//line z
}
}
return false;
}
此方法将查找由name指定的Balloon并删除它的第一个实例,如果实际找到并移除了气球,则返回true,否则将其删除。如果要删除该名称的所有气球,可以在方法的开头创建一个布尔值b并将其设置为false。然后,您可以将行z更改为
b=true;
然后在方法的底部,返回b。
现在,通过编辑,你可能意味着两件事之一。如果您正在计划修改气球的实际名称,您可以使用类似我上面制作的循环,只需在找到它时修改名称,再次可以使用该名称修改所有气球,或者只是你找到的第一个。
或者,如果通过修改气球意味着使用具有不同名称的新气球替换ArrayList中的气球,则需要使用以下方法:
balloons.remove(i);//remove balloon at index
balloons.add(i,newBalloon);//put the new balloon(with different data) at the index of the old one