2013-06-19 2 views
2

어떤 이유로 'if'문에서 문자열 길이를 검사 할 때 NullPointerException이 발생합니다. 나는 아마 그것을 잘못하고있다. 그러나 나는 정말로 모른다. 기본적으로 쓰려고하는 코드는 버튼의 레이블을 변경하지만 'label1'문자열이 0 자 (또는 설정되지 않음) 인 경우에만 한 번만 변경할 수 있습니다. 당신은 당신이 lable가 intialised되지 lable1 문자열 길이를 검사하면 NullPointerException이 반환됩니까?

전에 초기화하기 위해이 if(label1.length() == 0) {

import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 

     public class Class1 { 

public static String label1; 


public static String one = ("Hello"); 
public static String two = ("Goodbye"); 

public static void main(String args[]) { 

    JFrame frame = new JFrame(); 
    JPanel pane = new JPanel(); 
    JButton button = new JButton(); 


    button.addActionListener(new ActionListener() { 

     @Override 
     public void actionPerformed(ActionEvent e) { 
      try { 
      if(label1.length() == 0) { 

       label1 = one; 
       JButton button = (JButton) e.getSource(); 
       button.setText(label1); 
      } 
      if(label1.length() < 0) { 

       label1 = two; 
       JButton button = (JButton) e.getSource(); 
       button.setText(label1); 
      } 
     } catch(Exception ex) { 
       System.out.println("ERROR"); 
       ex.printStackTrace(); 
      } 

     }  
    }); 

    frame.setSize(350, 350); 
    frame.setVisible(true); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    frame.add(pane); 
    pane.add(button); 


    } 

} 
+0

'label1' 문자열을 초기화하지 않았습니다. –

+0

사용하기 전에 label1을 초기화하십시오. public static String label1 = null; –

답변

7
public static String label1; 

선을 사용! 언제 어디서나 호출 할 때 우리는 NullPointerException를 얻을 수 label

public static String label1 = new String("someString"); 

에 몇 가지 문자열 값을 할당 추가 널 (null) 조건을

if(label1 != null && label1.length() == 0) { 
+0

감사합니다. 나는 그것이 초기화되지 않았 으면 String이 0 문자를 포함하는 것으로 분류 될 것이라고 생각했지만 그렇지 않다고 생각한다. –

+0

@NoneNone 도움이 되셨다면 기꺼이 도와 드리겠습니다. 도움이 되었다면 답변 (투표 화살표 아래 녹색 점)으로 표시하십시오. –

0

을 그 라인

public static String label=""; 

을 변경하거나 추가 할 그것을

시도를 사용하여 벌이 아닌 오브젝트 참조의 메소드 n은 아직 객체를 지정하지 않았으므로 오류가있는 참조는 null

0

label1입니다. 초기화하지 않았으므로 null입니다.

label1 = "";

가 문제를 해결해야합니다 귀하의 예에서

0

, String 객체 "LABEL1"가 초기화되지 및 NULL (이 null 이외의 크기가 0이 될 것이다). 즉, 존재하지 않는 객체에서 메소드를 호출하려고하면 NullPointerException이 발생해야합니다.

할당 된 개체가 있는지 확인하려면 if (label1 != null)을 시도하십시오.

값을 할당하려면 label1 = "my String" -이 작업은 String 객체를 초기화합니다.

0

항상 null을 확인하십시오. 예 :

관심이 있으신 분은 (label1.length() < 0)이 사실입니까?

+0

사실이 아니기 때문에 나는 아직 전체 프로그램을 끝내지 못했습니다. –

+0

필자는 필연적 인 필요성에 대해 흥미를 느낍니다. – SK9