调用getter方法而不在if语句中指定对象

时间:2014-12-14 16:15:44

标签: java

我正在练习使用getter和setter。我正在制作一个JOption窗格,询问用户医院患者的唯一编号并返回患者详细信息。我命名患者/对象p1,p2,p3等我在另一个类文件中创建了Getters和Setters。

我的问题是,如何创建一个单独的If语句来接受任何患者对象作为输入?

有没有办法我可以要求JOptionPane.showMessageDialog只调用getName,getAge等方法,而不必为每个对象/患者创建一个if语句?即p2.getName,p3.getName,p4.getName等。

import java.util.Scanner;
import javax.swing.JOptionPane;

public class Main {

    public static void main(String[] args) {

        Person p1 = new Person();
        p1.setpatientNumber(001);
        p1.setName("David");
        p1.setYearOfBirth(1983);
        p1.setFather("Mike");
        p1.setMother("Unknown");

        Person p2 = new Person();
        p2.setpatientNumber(002);
        p2.setName("Simon");
        p2.setYearOfBirth(1979);
        p2.setFather("John");
        p2.setMother("Mary");

        Scanner keyboard = new Scanner(System.in);

        int input = Integer.parseInt(JOptionPane.showInputDialog("Enter the patient number"));
        if (p1.getpatientNumber() == input) {
        JOptionPane.showMessageDialog(null, "Patient details:\n" + p1.getName() + "\n" + p1.getYearOfBirth() + "\n" + p1.getFather() + "\n" + p1.getMother());
        }else{
            JOptionPane.showMessageDialog(null, "Unknown number");
        }
    }
}

2 个答案:

答案 0 :(得分:0)

您可以将所有Person个对象添加到ArrayList,然后对其进行迭代。

ArrayList<Person> persons = new ArrayList<Person>;

//Create your persons

persons.add(p1);
persons.add(p2);

//Get input

//Iterate over all persons in the persons ArrayList
for (Person p : persons) {
    if (p.getPatientNumber() == input) {
        JOptionPane.showMessageDialog(null, "Patient details:\n" + p.getName() + "\n" + p.getYearOfBirth() + "\n" + p.getFather() + "\n" + p.getMother());
    }
}

答案 1 :(得分:0)

将您的患者存储在List或数组中(如果您已知道其大小),并迭代整个列表。类似的东西:

List<Person> personList = new ArrayList<Person>();
personList.add(p1);
personList.add(p2);

要搜索患者,请执行以下操作:

for (Person person : personList) {
    if (person.getpatientNumber() == input) {
         JOptionPane.showMessageDialog(null, "Patient details:\n" + p1.getName() + "\n" + p1.getYearOfBirth() + "\n" + p1.getFather() + "\n" + p1.getMother());
     }    
 }

注意一方:你应该使用1/2/3作为患者ID而不是001等,因为从0开始的数字在Java中被视为八进制值。