繁体   English   中英

在Java中将字符串从一类传递到另一类

[英]Pass a string from one class to another in java

我正在尝试将String从一类传递到另一类,但是我得到的结果是'null'。 我想将String用户名从LoginFrame传递给HomeworkFrame;

作业框架:

public void loadSubjects (){
    String item;
    try{
        System.out.println(username);
        Scanner f = new Scanner (new FileReader (username + " " + "Subjects" + ".txt"));
        while(f.hasNext()){
            item = f.nextLine();
            chSubjects.add(item);
        }
        f.close();  
    }catch(Exception e){
        JOptionPane.showMessageDialog(null, "Subjects cannot be loaded!", "Error", JOptionPane.ERROR_MESSAGE);
    }
}   

LoginFrame:

 public void loginUser(){
    r = new Registration();
    h = new HomeworkFrame();
    l = new Login();

    l.username = txtUser.getText();
    l.password = txtPass.getText();
    try{
        String line;
        boolean passwordFound = false ;
        BufferedReader f = new BufferedReader(new FileReader(l.username + ".txt"));
        while((line = f.readLine()) != null){
            if(line.equals(l.password)){
                passwordFound = true;
            }
        }

        if(passwordFound){
                h.username = l.username;
                dispose();
                m.setSize(700,600);
                m.setLocation(100,100);
                m.setVisible(true);
            }else{
                JOptionPane.showMessageDialog(null, "Wrong information!", "Error", JOptionPane.ERROR_MESSAGE);
            }
        f.close();
    }catch(Exception e){
        JOptionPane.showMessageDialog(null, "Wrong information!", "Error", JOptionPane.ERROR_MESSAGE);
    }
}

显然,由于用户名为空(我使用println方法检查了它),因此出现错误“无法加载主题”。

如果出现此类问题,您必须从您注意到“用户名”字段为null的位置跟踪变量/字段。 下一步应该是:

  1. 在调用loadObjects()方法之前,请检查对'h'对象执行的操作,然后检查对HomeWorkFrame的用户名字段有什么影响(使用println或调试器)。
  2. 检查LoginFrame中的passwordFound是否为true(因为如果为false,则不会为h.username分配值)
  3. 如果为假,请检查是否已从文件中检索密码(使用相同的println语句)

这种情况应该可以帮助您找到大多数“空”错误。

首先尝试检查一下,您得到哪种类型的异常。

可能是文件不存在或列表为null或....

是格式问题:将\\放在pathString中的空格之前: "\\ "

您必须将其写为"\\ Subjects.txt" ,两者之间不能有“ +”。

如果是System.out.println(username); 显示null意味着

1.username变量未初始化并保留。

2.value未正确分配。

3.它可能是一个静态变量,您正在更改它的值。

请检查所有这些条件,并提供从中调用loadSubjects()的那部分代码,而不是该方法的主体,因为您已经禁止了它。

还有所有初始化,分配,修改用户名的代码部分。

  

回答您的问题! :)

需要指定或传递该值,否则肯定会给出Null,因为它将找不到任何要执行的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM