我正在练习使用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");
}
}
}
答案 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中被视为八进制值。