即使我使用 set 方法设置了一个值,它也会从 get 方法返回 null

Even I set a value with a set method, it returns null from a get method

提问人:hmu 提问时间:4/22/2023 更新时间:4/22/2023 访问量:39

问:

这是我的主要代码

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。

java get null 返回

评论


答:

0赞 Kurojin 4/22/2023 #1

看起来在 run() 方法中实例化的“CampusPath”从未设置过他的“path”属性。

您正在“Campus”实例中设置“CampusPath”的全新实例,两个“CampusPath”对象是两个单独的引用,设置其中一个不会改变另一个。

评论

0赞 hmu 4/23/2023
哦,这就是问题所在......所以我只是以不同的方式尝试,它奏效了!谢谢你的解决方案。