【问题标题】:Pass a string from one class to another in java在java中将字符串从一个类传递到另一个类
【发布时间】:2012-09-20 13:08:57
【问题描述】:

我正在尝试将字符串从一个类传递到另一个类,但我得到的结果是“null”。我想将字符串用户名从 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);
    }
}   

登录框架:

 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 方法检查了它)。

【问题讨论】:

  • 您是否尝试调试代码(例如使用 eclipse)并观察变量传递?
  • 你没有显示你调用loadSubjects()的代码。请问你能提供这个吗?
  • 'public void loadSubjects(){ String item;尝试{ System.out.println(用户名); 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, "无法加载主题!", "Error", JOptionPane.ERROR_MESSAGE); } }'

标签: java string class


【解决方案1】:

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

  1. 在调用 loadObjects() 方法之前检查您对“h”对象执行的操作,如果有,则检查它们对 HomeWorkFrame 中的用户名字段的影响(使用 println 或调试器)。
  2. 检查您在 LoginFrame 中的 passwordFound 是否为真(因为如果为假,则不会为 h.username 赋值)
  3. 如果错误,请检查您的密码是否已从文件中检索到(使用相同的 println 语句)

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      是格式问题:在 pathString 中的空格前放一个\"\ "

      你必须写"\ Subjects.txt",中间没有'+'。

      【讨论】:

        【解决方案4】:

        public class LoginFrame{
        
           private HomeworkFrame hw;
        
           public void doSomething(){
        
                  String username = "your username";
                  hw = new HomeworkFrame(username);
           }
        }
        public class HomeworkFrame{
        
           public HomeworkFrame(String username){
        
                    doSomething with 'username'
           }
        }
        

        回答你的问题! :)

        【讨论】:

          【解决方案5】:

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

          1.username变量未初始化而离开。

          2.value 没有正确分配给它。

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

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

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

          【讨论】:

            【解决方案6】:

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

            【讨论】:

              猜你喜欢
              • 2015-10-10
              • 1970-01-01
              • 1970-01-01
              • 2013-05-19
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多