提问人:hmu 提问时间:4/22/2023 更新时间:4/22/2023 访问量:39
即使我使用 set 方法设置了一个值,它也会从 get 方法返回 null
Even I set a value with a set method, it returns null from a get method
问:
这是我的主要代码
public class PSugangSincheong {
public void run(VUserInfo vUserInfo) {
Campus campus = new Campus();
College college = new College();
Department department = new Department();
Lecture lecture = new Lecture();
CampusPath campusPath = new CampusPath();
CollegePath collegePath = new CollegePath();
DepartmentPath departmentPath = new DepartmentPath();
try {
// System.out.println(vUserInfo.getName() + "welcome.\n");
int input = 0;
String path = System.getProperty("user.dir") + "\\data\\root.txt";
Scanner sc = new Scanner(System.in);
campus.show(path);
input = sc.nextInt();
campus.run(input, path);
path = campusPath.getCampuspath();
System.out.println(path);
college.show(path);
// input = sc.nextInt();
// college.run(input, path);
// path = collegePath.getCollegepath();
// department.show(path);
// input = sc.nextInt();
// department.run(input, path);
// path = departmentPath.getDepartmentpath();
// lecture.show(path);
// input = sc.nextInt();
// lecture.run(input, path);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
这是我的校园课
public class Campus {
String newPath = "";
CampusPath campusPath = new CampusPath();
ArrayList<String> campusNum = new ArrayList<>();
ArrayList<String> campusName = new ArrayList<>();
ArrayList<String> campus= new ArrayList<>();
public void show(String path) throws FileNotFoundException {
Scanner campusFile = new Scanner(new File(path));
System.out.println("input a number.");
while(campusFile.hasNext()) {
String line = campusFile.nextLine();
System.out.println(line);
String[] tokens = line.split(" ");
campusNum.add(tokens[0]);
campusName.add(tokens[1]);
campus.add(tokens[2]);
}
campusFile.close();
}
public void run(int input, String path) {
while(true) {
if(input <= Integer.parseInt(campusNum.get(campusNum.size()-1)) && input >= Integer.parseInt(campusNum.get(0))) {
for(int i = 0; i < campusNum.size(); i++) {
if(input == Integer.parseInt(campusNum.get(i))) {
System.out.println(campusName.get(i) + "campus\n");
newPath = campus.get(i);
path = System.getProperty("user.dir") + "\\data\\"+ newPath +".txt";
campusPath.setCampuspath(path);
}
}
break;
}else {
System.out.println("wrong number.");
}
}
}
}
这是我的校园路径代码
public class CampusPath {
private String path;
public void setCampuspath(String path) {
this.path = path;
}
public String getCampuspath() {
return path;
}
}
问题是当我这样做时,它返回一个空数据而不是路径。
谁能帮我。代码有点长..我很抱歉......path = campusPath.getCampuspath();
我希望它设置路径并返回路径。它正确设置路径,但返回 null。当我设置它并立即获得它时,它可以工作,但是当我像上面的代码一样这样做时,它不起作用。我尝试了很多调试,但不知道为什么它会变成 null。
答:
0赞
Kurojin
4/22/2023
#1
看起来在 run() 方法中实例化的“CampusPath”从未设置过他的“path”属性。
您正在“Campus”实例中设置“CampusPath”的全新实例,两个“CampusPath”对象是两个单独的引用,设置其中一个不会改变另一个。
评论
0赞
hmu
4/23/2023
哦,这就是问题所在......所以我只是以不同的方式尝试,它奏效了!谢谢你的解决方案。
评论