簡體   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