这基本上是一个添加或尝试将患者细节添加到对象数组的程序。患者是在医院建设者中创建的。
import java.util.*;
public class Hospital {
public static String firstName;
public static String lastName;
public static int patientID = 1;
public static int phoneNum;
private static int i = 0;
private static Hospital[] hosArray = new Hospital[100];
public Hospital(){
firstName = "";
lastName = "";
patientID = 0;
phoneNum = 0;
}
public Hospital (String fName, String lName, int pID, int pNum){
firstName = fName;
lastName = lName;
patientID = patientID++;
phoneNum = pNum;
}
public static void scanner(){
系统会提示用户添加姓氏,姓氏,电话号码等内容。
Scanner user = new Scanner(System.in);
System.out.print("Enter 1 to add patient: ");
int input = user.nextInt();
if (input == 1){
System.out.print("Enter first name: ");
String fName = user.next();
System.out.print("Enter last name: ");
String lName = user.next();
System.out.print("Enter phone number: ");
int pNum = user.nextInt();
这是我尝试将每个新对象添加到数组中的地方,它似乎可以工作。当我添加一名患者时 它打印出那个病人。但是,当我尝试添加多个患者时 然后,我输入的最后一名患者打印出与患者数量相同的次数 我试图进入。 :
if(hosArray[i] == null){
hosArray[i] = new Hospital();
hosArray[i] = new Hospital(fName, lName, Hospital.patientID, pNum);
i++;
}
scanner();
}
}
public int getpID(){
return patientID;
}
public static void main(String[] args) {
scanner();
for (int j = 0; j < hosArray.length; j++){
if (hosArray[j] != null )
{
System.out.println(hosArray[j].firstName);
}
}
}
}
这是我程序的输出。
Enter 1 to add patient: 1
Enter first name: joe
Enter last name: bloggs
Enter phone number: 1234
Enter 1 to add patient: 1
Enter first name: john
Enter last name: doe
Enter phone number: 4321
Enter 1 to add patient: 0
john
john
对于我的生活,我无法理解为什么它不打印阵列,我会很感激 帮助我,我可以得到。感谢。
答案 0 :(得分:0)
问题是你将firstName和lastName patientID和phoneNumber定义为静态变量。每次添加新对象时,您都要设置这些变量,但该类的所有其他对象共享变量,因为它们是静态的。只有您输入的最后一位患者才会显示所有打印输出,因为静态变量由该类的所有对象共享。
我修复了你的代码,所以它会做你想做的事情,但代码仍然有些问题。对于所有患者,所有患者将具有相同的id = 1。
public class Hospital {
public String firstName;
public String lastName;
public static int patientID = 1;
public int phoneNum;
private static int i = 0;
private static Hospital[] hosArray = new Hospital[100];
public Hospital() {
firstName = "";
lastName = "";
patientID = 0;
phoneNum = 0;
}
public Hospital(String fName, String lName, int pID, int pNum) {
firstName = fName;
lastName = lName;
patientID = patientID++;
phoneNum = pNum;
}
public static void scanner() {
Scanner user = new Scanner(System.in);
System.out.print("Enter 1 to add patient: ");
int input = user.nextInt();
if (input == 1) {
System.out.print("Enter first name: ");
String fName = user.next();
System.out.print("Enter last name: ");
String lName = user.next();
System.out.print("Enter phone number: ");
int pNum = user.nextInt();
if (hosArray[i] == null) {
hosArray[i] = new Hospital();
hosArray[i] = new Hospital(fName, lName, Hospital.patientID,
pNum);
i++;
}
scanner();
}
}
public int getpID() {
return patientID;
}
public static void main(String[] args) {
scanner();
for (int j = 0; j < hosArray.length; j++) {
if (hosArray[j] != null) {
System.out.println(hosArray[j].firstName);
}
}
}
}
答案 1 :(得分:0)
您在Hospital类中使用静态变量。这些变量在所有Hospital对象之间共享,因此当您更新名称时,所有Hospital对象都将具有相同的名称。从每个Hospital对象的唯一属性中删除static,例如name,patiendID等。