我在这里遇到了很大的问题
public class Attendant {
//Max. amount = 10
public int staffNum = 10;
private String[] id;
private boolean available;
private attNm name;
/**
* @param staffNum
* @param strings
* @param available
* @param name
*/
public Attendant(int staffNum, String[] id, boolean available, attNm name) {
this.staffNum = staffNum;
this.id = id;
this.available = available;
this.name = name;
}
public String[] getID(){
String[] tempArray = new String[staffNum];
for(int x=0; x<staffNum;x++){
tempArray[x] = ("Att" + (x+1));
System.out.println(tempArray[x]);
}
return tempArray;
}
}
以上是我的专业课 就在下面是我的主要
public class Main {
public static void main(String[] args) {
}
public static void createAtt(){
for(int x=0; x<10;x++){
Attendant att = new Attendant(x+1, att.getID(), true, attNm.Emma);
}
}
}
我的问题是我需要从构造函数创建10个服务员。但这些ID来自服务员课程。从技术上讲,我认为我必须首先申报服务员。 但是这里需要从类中获取ID。 此外,它应该只在循环的每次迭代中获得一个ID。(每次迭代从数组中获取下一个ID)
如果可能的话: 有没有办法让enum类中的方法发送或使用,以便我可以将其称为参数。[在我的emma只是为了测试]
我真的不知道如何计算这些。 我在谷歌上找不到类似的东西。 请。
答案 0 :(得分:1)
有太多事情需要照顾,即:
这就是你的Attendant类应该是这样的:
public class Attendant {
private String id; // not an array
// your rest of fields
public Attendant(int staffNum, String id, boolean available, attNm name) {
// modified --------------- ^^^^^^^^
}
//accessors, so on for the others
public String getId() {
return id;
}
}
答案 1 :(得分:1)
我认为您的主要方法为空,但我觉得一旦您的问题得到解决,您就会在其中编写代码。所以现在继续讨论你的问题。
问题原因 你正在做的错误是在创建一个试图从中提取东西的对象之前,因此引用引用null然后你想要在引用引用的对象(null)上执行一个方法。
<强>解决方案强>
消除循环依赖。对于对象创建,您需要调用getID()
并调用您希望创建对象的getID()
。
虽然有多种方法可以解决这个问题,但下面是解决问题的方法之一。
在课程getID()
中将static method
声明为Attendant.java
,并将staffNum
作为方法参数。现在您可以在不需要对象的情况下调用此方法。您只需要将dot operator
与Attendant
班级名称一起使用。
总结:
将getID()
声明为static
并添加staffNum
作为参数。
public static String[] getID(int staffNum)
修改for循环中的代码。
Attendant att = new Attendant(x+1, Attendant.getID(x+1), true, attNm.Emma);
答案 2 :(得分:1)
将你的getId()移动到你的主:
public class Main {
public static void main(String[] args) {
int staffNum = 10;
String []ids = getID(staffNum);
for(int x=0; x<staffNum;x++){
Attendant att = new Attendant(x+1, ids[x], true, attNm.Emma);
}
}
public static String[] getID(int staffNum){
String[] tempArray = new String[staffNum];
for(int x=0; x<staffNum;x++){
tempArray[x] = ("Att" + (x+1));
System.out.println(tempArray[x]);
}
return tempArray;
}
}
}
并且还要更改您的Attendant以获取String id而不是数组。
public Attendant(int staffNum, String id, boolean available, attNm name) {
this.staffNum = staffNum;
this.id = id;
this.available = available;
this.name = name;
}