Java 尝试填充不超过两个医院的列表时出现无限循环
在此项目中,用户必须进入1或2家医院,但不能进入3家或更多医院。程序启动了,我显示了一个菜单。如果用户按1,则必须输入医院(名称和科室)。之后,程序再次显示菜单,用户可以选择插入另一家医院 但是在那之后,如果我选择插入另一个(这是不允许的),程序会接受它。似乎每次从主类调用Java 尝试填充不超过两个医院的列表时出现无限循环,java,Java,在此项目中,用户必须进入1或2家医院,但不能进入3家或更多医院。程序启动了,我显示了一个菜单。如果用户按1,则必须输入医院(名称和科室)。之后,程序再次显示菜单,用户可以选择插入另一家医院 但是在那之后,如果我选择插入另一个(这是不允许的),程序会接受它。似乎每次从主类调用InsertHospitals()时,numberofhospitals的值(这是一个计数我输入了多少家医院的计数器)都等于0 public class Hospital { private String Name,
InsertHospitals()
时,numberofhospitals
的值(这是一个计数我输入了多少家医院的计数器)都等于0
public class Hospital {
private String Name, Departments;
private char flag;
private int numberofhospitals;
private Hospital[] ListOfHospitals;
//private Patient[] ListOfPatiens;
//private Doctor[] ListOfDoctors;
//private Examination[] ListOfExaminations;
//private Folder[] ListOfFolders;
public Hospital(String Name, String Departments)
{
this.Name=Name;
this.Departments=Departments;
}
public Hospital()
{
ListOfHospitals = new Hospital[2];
//ListOfPatiens = new Patient[100];
//ListOfDoctors = new Doctor[100];
//ListOfExaminations = new Examination[100];
//ListOfFolders = new Folder[100];
}
public String getName()
{
return Name;
}
public void setname(String Name)
{
this.Name=Name;
}
public String getDepartments()
{
return Departments;
}
public void setdepartments(String Departments)
{
this.Departments=Departments;
}
public void InsertHospitals()
{
if(numberofhospitals==2)
{
System.out.println("You can give only two hospitals!");
}
else
{
String temp = sir.readString("Hospital's Name:");
Name=temp;
String temp1 = sir.readString("Hospital's departments:");
Departments=temp1;
Hospital hospital = new Hospital(Name, Departments);
ListOfHospitals[numberofhospitals]=hospital;
numberofhospitals=numberofhospitals+1;
}
}
}
你的误解是,医院名单(如上所述)不应该在你的医院类别内。你必须把你的医院类看作你在应用程序中使用的蓝图。 这意味着您需要一个医院列表,作为其他应用程序类(运行该应用程序)中的列表,InsertHospitals方法显然也不应该出现在您的医院类中 在程序中添加新医院时,将创建一个新医院对象,并将其作为字段值添加到医院列表(fx arraylist)中 也可能在hospital类中使用参数创建一个新的构造函数,以便可以在类之外插入值 像这样的
public class MainApp {
private ArrayList<Hospital> hospitalList;
public static void main(String[] args) {
// Initialize or load it from a file or whatever here.
hospitalList = new ArrayList<Hospital>();
// your code here...
}
public void insertHospital(<insert parameters here to create a hospital>) {
Hospital newHospital = new Hospital(<insert params with new constructor>);
hospitalList.add(newHospital);
}
}
public类MainApp{
私人ArrayList住院医生;
公共静态void main(字符串[]args){
//初始化或从文件或任何地方加载它。
hospitalList=新ArrayList();
//你的代码在这里。。。
}
公立医院{
医院新医院=新医院();
医院列表。添加(新医院);
}
}
无论您遇到什么问题,您的程序都是完全错误的。在insertHospital()
中,更改名称
和科室
字段,并使用这些值创建新的医院
。当您打印医院
信息时,所有医院
都将具有相同的值。您有什么问题?医院列表不应是医院
类的成员。这将创建每个新医院的医院列表。你想要一张单子,谢谢。我也想过,但我们有义务这样做。这是一个项目,我们被要求这样做。还有别的办法吗?问题不清楚。循环?什么环路?(顺便说一句,如果你用任何参数构建你的医院
,你根本就不会有一个数组。)是的,他说的是正确的。需要两个班来解决这个问题。分别创建hospital类,并创建另一个类,其中包含两个hospital类型元素的数组。