Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 尝试填充不超过两个医院的列表时出现无限循环_Java - Fatal编程技术网

Java 尝试填充不超过两个医院的列表时出现无限循环

Java 尝试填充不超过两个医院的列表时出现无限循环,java,Java,在此项目中,用户必须进入1或2家医院,但不能进入3家或更多医院。程序启动了,我显示了一个菜单。如果用户按1,则必须输入医院(名称和科室)。之后,程序再次显示菜单,用户可以选择插入另一家医院 但是在那之后,如果我选择插入另一个(这是不允许的),程序会接受它。似乎每次从主类调用InsertHospitals()时,numberofhospitals的值(这是一个计数我输入了多少家医院的计数器)都等于0 public class Hospital { private String Name,

在此项目中,用户必须进入1或2家医院,但不能进入3家或更多医院。程序启动了,我显示了一个菜单。如果用户按1,则必须输入医院(名称和科室)。之后,程序再次显示菜单,用户可以选择插入另一家医院

但是在那之后,如果我选择插入另一个(这是不允许的),程序会接受它。似乎每次从主类调用
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类型元素的数组。