这是人类的第一个代码:
public class Person {
private int age;
private String name;
public Person(String name,int age){
this.age = age;
this.name = name;
}
public void setName(String name){
this.name = name;
}
public void setAge(int age){
this.age = age;
}
public int getAge(){
return age;
}
public String getName(){
return name;
}
public String toString(){
return name+","+age;
}
}
然后这是主要类,它将显示输出:
import java.util.ArrayList;
import javax.swing.JOptionPane;
public class PersonDatabase {
public static void main(String[] args) {
ArrayList<Person> list= new ArrayList<>();
Person p = new Person("",0);
int choice =0;
String listing ="";
do{
choice=Integer.parseInt(JOptionPane.showInputDialog(null,"\nChoices:"+"\n[1]Add"+"\n[2]Edit"+"\n[3]Delete"+"\n[4]Search"+"\n[5]View"+"\n[6]Sort"+"\n[7]Exit"+"\nEnter Choice:"));
switch(choice){
case 1:
String name = JOptionPane.showInputDialog(null,"\nEnter Name:");
int age = Integer.parseInt(JOptionPane.showInputDialog(null,"\nEnter Age:"));
list.add(new Person(name,age));
break;
case 2:
try{
int index = Integer.parseInt(JOptionPane.showInputDialog(null,"Enter index value:"));
name = JOptionPane.showInputDialog(null,"Enter Name:");
age = Integer.parseInt(JOptionPane.showInputDialog(null,"Enter Age:"));
list.set(index,name,age);
}catch(IndexOutOfBoundsException e){
JOptionPane.showMessageDialog(null,"Invalid Index");
}
break;
case 3:
break;
case 4:
break;
case 5:
if(!list.isEmpty()){
for(int i=0;i<list.size();i++){
listing+=list.get(i).toString()+"\n";
}
JOptionPane.showMessageDialog(null,listing);
}else{
JOptionPane.showMessageDialog(null,"ERROR","", JOptionPane.WARNING_MESSAGE);
}
break;
case 6:
break;
case 7:
break;
}
}while(choice!=7);
}
}
如何使用索引以便搜索输入的对象,然后使用list.set()
进行编辑答案 0 :(得分:3)
创建Person
实例,然后将其设置为索引。
list.set(index,name,age);
改为使用
list.set(index,new Person(name,age));
您已在add()
方法中执行相同操作,同时将Person
添加到列表中。它是一样的,只需使用set()
方法。
问题是,每次调用listing
时,您都不会重置view
。在view
的开头,您可以将其重置为空字符串。添加以下行。
case 5:
listing = "";
答案 1 :(得分:3)
如果您知道i
对象的索引Person
,list.get(i)
将为您提供可以在适当位置修改的对象。由于您的Person
对象可变,您可以这样做:
Person p = list.get(i);
p.setName(name);
p.setAge(age);
这是有效的,因为p
引用了存储在Person
内的同一个list
对象。
答案 2 :(得分:0)
您可以通过搜索用户名进行编辑。通过这样做,应用程序可以保证不会有IndexOutOfBoundException
。怎么样?
在case 2
中,首先获取输入的用户名。然后遍历列表找到他。找到后,使用list.get(i)
来获取用户,编辑它并打破循环。