Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用ArrayList中的索引编辑对象_Java_Arraylist - Fatal编程技术网

Java 使用ArrayList中的索引编辑对象

Java 使用ArrayList中的索引编辑对象,java,arraylist,Java,Arraylist,这是第一个代码,即Person类: 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;

这是第一个代码,即Person类:

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);
    }

}
import java.util.ArrayList;
导入javax.swing.JOptionPane;
公共类PersonDatabase{
公共静态void main(字符串[]args){
ArrayList=新建ArrayList();
人员p=新人员(“,0);
int-choice=0;
字符串列表=”;
做{
choice=Integer.parseInt(JOptionPane.showInputDialog(null),\n注释:“+”\n[1]添加“+”\n[2]编辑“+”\n[3]删除“+”\n[4]搜索“+”\n[5]查看“+”\n[6]排序“+”\n[7]退出“+”\n输入选项:);
开关(选择){
案例1:
String name=JOptionPane.showInputDialog(null,“\n输入名称:”);
int age=Integer.parseInt(JOptionPane.showInputDialog(null,“\n输入年龄:”);
列表。添加(新人员(姓名、年龄));
打破
案例2:
试一试{
int index=Integer.parseInt(JOptionPane.showInputDialog(null,“输入索引值”);
name=JOptionPane.showInputDialog(null,“输入名称:”);
age=Integer.parseInt(JOptionPane.showInputDialog(null,“输入年龄:”);
列表.集合(索引、名称、年龄);
}catch(IndexOutOfBoundsException e){
showMessageDialog(null,“无效索引”);
}
打破
案例3:
打破
案例4:
打破
案例5:
如果(!list.isEmpty()){

对于(inti=0;i创建
Person
实例,然后将其设置为索引

list.set(index,name,age);
改用

list.set(index,new Person(name,age));
在将
Person
s添加到列表时,您已经在
add()
方法中执行了相同的操作。同样,只需使用
set()
方法即可


问题是,您没有在每次调用
视图
时重置
列表
。在
视图
的开头,您可以将其重置为空字符串。添加以下行

case 5:
   listing = "";

创建
Person
实例,然后将其设置为索引

list.set(index,name,age);
改用

list.set(index,new Person(name,age));
在将
Person
s添加到列表时,您已经在
add()
方法中执行了相同的操作。同样,只需使用
set()
方法即可


问题是,您没有在每次调用
视图
时重置
列表
。在
视图
的开头,您可以将其重置为空字符串。添加以下行

case 5:
   listing = "";

如果您知道
Person
对象的索引
i
list.get(i)
将为您获取可以就地修改的对象。由于您的
Person
对象是可变的,您可以执行以下操作:

Person p = list.get(i);
p.setName(name);
p.setAge(age);

这是因为
p
引用的
Person
对象与存储在
列表中的
Person
对象相同,如果您知道
Person
对象的索引
i
list.get(i)
将为您获取可以在适当位置修改的对象。由于您的
Person
对象是可变的,因此您可以执行以下操作:

Person p = list.get(i);
p.setName(name);
p.setAge(age);

这是因为
p
引用了存储在
列表中的同一
Person
对象,您可以通过搜索用户名进行编辑。通过这样做,应用程序可以保证不会出现
IndexOutOfBoundException

案例2中,首先获取输入的用户名。然后在列表中循环找到他。一旦找到,使用
列表。获取(i)
获取用户,编辑它,并打破循环。

您可以通过搜索用户名来改为编辑。通过这样做,应用程序可以保证不会出现
索引自动边界异常?

case2
中,首先获取输入的用户名。然后在列表中循环找到他。一旦找到,使用
list.get(i)
获取用户,编辑它,并打破循环。

当我尝试获取输出时,它只添加但不编辑对象。您是否更新了上面答案中提供的代码。它应该执行。list.set(index,element)->
将此列表中指定位置的元素替换为指定的元素。
在本地对代码进行更改并运行它。它应该可以工作。当我只输入了一个对象时,我可以编辑它,但当我添加另一个对象后再编辑它时,它将只生成一个新对象,而不会编辑我指定的索引值,但需要一些资源nd调试它。比如当前索引的值或列表的大小。当我尝试获取输出时,它只添加但不编辑对象。您是否更新了上面答案中提供的代码。它应该执行。list.set(index,element)->
将此列表中指定位置的元素替换为指定的元素。
在本地对代码进行更改并运行它。它应该可以工作。当我只输入了一个对象时,我可以编辑它,但当我添加另一个对象后再编辑它时,它将只生成一个新对象,而不会编辑我指定的索引值,但需要一些资源nd调试。例如,当前索引的值或列表的大小是多少。您不应将答案中的代码添加到OP。这将混淆文章的未来读者。您不应将答案中的代码添加到OP。这将混淆文章的未来读者。