2013-11-15 95 views
0

这是一个面向调试的问题,但我一直很困惑为什么我的一些对象返回NULL值。访问类的字符串返回NULL

我这里有一个图形用户界面,单击按钮时,从文本字段使用字符串,

public class USAdditionalGUI extends javax.swing.JFrame { 

public String AreaCode; // declare Strings 
public String Exchange; 
public String LastFour; 
public String State; 

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           
    // On button click use getText() to collect the strings from the 
    //`enter code here` fields and store them into the declared strings. 

    AreaCode = jTextField3.getText(); 
    Exchange = jTextField1.getText(); 
    LastFour = jTextField2.getText(); 
    State = jTextField4.getText(); 

}  

下一个类有获取每个字符串变量下的方法,在这里就是问题所在,我创建一个对象到GUI类并尝试访问字符串信息,但它在打印出来时会一直呈现为NULL。

public class TRFUSAddressFormatting{ 
private String State; 
private String areacode; // 3 digits 
private String digitExchange; // 3 
private String lastfour; // 4 

USAdditionalGUI usobj = new USAdditionalGUI(); 

public String getState(){ 

    State = usobj.State; 
    System.out.println(State); // Why does this print NULL!!?!?! 
    return State; 
} 


}       

我正确访问字符串吗?

+0

看来你并不真正了解你的方法何时被调用。将代码添加到代码中,或者使用调试器并在每个方法的开始处放置一个断点,以了解代码的工作方式。当调用getState()时,按钮1还没有被点击,或者它已经在另一个USAdditionalGUI实例上被点击了。 –

回答

2

当你声明字符串时,你需要初始化它们或者它们将是空的。

public class USAdditionalGUI extends javax.swing.JFrame { 

    public String AreaCode = ""; // declare Strings 
    public String Exchange = ""; 
    public String LastFour = ""; 
    public String State = ""; 

或任何DEFAULT值要他们

顺便说一句,我建议你声明为private并实现get方法来检索他们的信息

public class USAdditionalGUI extends javax.swing.JFrame { 

    private String AreaCode = ""; // declare Strings 
    private String Exchange = ""; 
    private String LastFour = ""; 
    private String State = ""; 

    public String getAreaCode(){ 
     return AreaCode; 
    } 

    //and so 
程式码中
+0

谢谢,我不知道Java中的字符串。我肯定会添加额外的封装。 – coderkid

0

变量/场即AreaCode,Exchange是在创建类的对象时初始化为其默认值的类的实例变量。对象的默认值为空,除非明确初始化并且基元具有它们自己的默认值,例如int - > 0等。由于Areacode,Exchange,LastFour,State是String类型,它们作为JVM堆中的对象堆堆,因此它们被初始化为null除非你自己明确地初始化它们。

相关问题