簡體   English   中英

使用另一個類在ArrayList中存儲對象

[英]store object in ArrayList using another class

這是第一個代碼:

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,"Enter Name:");
                int age = Integer.parseInt(JOptionPane.showInputDialog(null,"Enter Age:"));
                list.add(new Person(name,age)); 
                break;

            case 2:
                break;

            case 3:
                break;

            case 4:

                break;
            case 5:
                if(!list.isEmpty()){
                    for(int i=0;i<list.size();i++){
                        listing+=list.toString();
                        JOptionPane.showMessageDialog(null,listing);
                    }
                }else{
                    JOptionPane.showMessageDialog(null,"ERROR","", JOptionPane.WARNING_MESSAGE);
                }
                break;
            case 6:
                break;

            case 7:
                break;


            }

        }while(choice!=7);
    }

}

我很抱歉,如果我不清楚我的問題,但我想使用ArrayList,其中我將ArrayList存儲在Person類中,我想使用public String toString查看它,所以它將顯示名稱和年齡

使用list.get(index)方法從列表中獲取Person對象,然后連接。

我想,一旦你得到了所有人的信息,那么你想要表現出來。 所以取出JOptionPane.showMessageDialog(null,listing); 來自for循環。 否則就像你現在一樣把它放在循環中。

for(int i=0;i<list.size();i++){
     listing += list.get(i).toString() + "\n";  // get the i Person instance from list and call toString()     
}
JOptionPane.showMessageDialog(null,listing);

您正在使用+運算符執行String連接。 您還可以使用StringBuilder類從列表中追加所有Person信息。

看起來問題與您的案例5:代碼有關。

嘗試

case 5:
   if(!list.isEmpty()){
      for(int i=0;i<list.size();i++){
        listing+=list.get(i).toString();
        JOptionPane.showMessageDialog(null,listing);
     }
  }else{
     JOptionPane.showMessageDialog(null,"ERROR","",
       JOptionPane.WARNING_MESSAGE);
  }
break;

注意list.get(i).toString( )而不是list.toString()

您的代碼似乎正在ArrayList中正確插入Person類。 所以,如果你需要使用toString()來查看ArrayList的內容,你需要的只是覆蓋Person類中的方法toString() 因此,當您打印ArrayList時,它只會為每個ArrayList元素調用toString()方法。

public static void main(String[] args) {

        ArrayList<Person> list= new ArrayList<>();
        int choice =0;

        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,"Enter Name:");
                int age = Integer.parseInt(JOptionPane.showInputDialog(null,"Enter Age:"));
                list.add(new Person(name,age)); 
                break;

            case 2:
                break;

            case 3:
                break;

            case 4:

                break;
            case 5:
                if(!list.isEmpty()){
                    foreach(Person p : list){
                        StringBuilder message = new StringBuilder();
                        message.append(p.toString());
                        message.append("\n"); 
                        JOptionPane.showMessageDialog(null,message.toString());
                    }
                }else{
                    JOptionPane.showMessageDialog(null,"ERROR","", JOptionPane.WARNING_MESSAGE);
                }
                break;
            case 6:
                break;

            case 7:
                break;


            }

        }while(choice!=7);
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM