2016-04-06 4 views
-5

私はインターネット上のすべてを見てきましたが、これが私のプログラムにどうして起こっているのか分かりません。 は基本的に私はそれが数字の文字列を作るというTextFieldを作成しようとしています、その文字列を整数に変換され、私はそれはInteger.parseIntを使用すると私のプログラムがクラッシュする

をクラッシュしInteger.parseIntを使用しようとするたびにラベルが数+1 に変更されここに私のコードは

public class dfadsfa { 

    private JFrame frame; 
    private JTextField textField; 

    /** 
    * Launch the application. 
    */ 
    public static void main(String[] args) { 
     EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       try { 
        dfadsfa window = new dfadsfa(); 
        window.frame.setVisible(true); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
    } 

    /** 
    * Create the application. 
    */ 
    public dfadsfa() { 
     initialize(); 
    } 

    /** 
    * Initialize the contents of the frame. 
    */ 

    String Text; 
    int Number = Integer.parseInt(Text); //This line Screws it up 

    private void initialize() { 
     frame = new JFrame(); 
     frame.setBounds(100, 100, 450, 300); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.getContentPane().setLayout(null); 

     JLabel lblNumber = new JLabel(""); 
     lblNumber.setBounds(198, 181, 61, 16); 
     frame.getContentPane().add(lblNumber); 

     textField = new JTextField(); 
     textField.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       Text = textField.getText(); 
       lblNumber.setText(Number+1+""); 
      } 
     }); 

     textField.setBounds(163, 140, 130, 26); 
     frame.getContentPane().add(textField); 
     textField.setColumns(10); 


    } 

} 

ですこれはあなたがいないに関わらず文字列のテキストを持っている

java.lang.NumberFormatException: For input string: "" 
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 
at java.lang.Integer.parseInt(Integer.java:592) 
at java.lang.Integer.parseInt(Integer.java:615) 
at dfadsfa.<init>(dfadsfa.java:42) 
at dfadsfa$1.run(dfadsfa.java:21) 
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) 
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756) 
at java.awt.EventQueue.access$500(EventQueue.java:97) 
at java.awt.EventQueue$3.run(EventQueue.java:709) 
at java.awt.EventQueue$3.run(EventQueue.java:703) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 
at java.awt.EventQueue.dispatchEvent(EventQueue.java:726) 
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) 
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) 
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) 
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) 
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) 
+2

申し訳ありませんが、_問題を解決するために "それは、クラッシュした" _不十分です。投稿を編集し、完全なスタックトレースを含めるだけでなく、例外をスローするプログラム内の行を特定する必要があります。この場合、検査でエラーが明らかであっても、必要な情報を含めるべきではありません。 –

+0

どのようにクラッシュしますか?エラーメッセージとは何ですか?スタックトレースの共有はどうですか? – dimo414

答えて

0

テキストが初期化されていないため、NumberFormatExceptionが返されます。 ここで、渡された文字列に解析可能な整数が含まれていない場合、Integer.parseInt()メソッドはNumberFormatExceptionを返します。

使用

String Text = "0"

+1

これは私の変更を私のラベルを0に変更しました、私の目標は数字に変更することです+1 –

+0

'Text = textField.getText(); \t int out = Integer.parseInt(Text)+1; \t lblNumber.setText(out + ""); ' – iDevRoids

5

アップ示したメッセージです。これは、intを解析しようとすると失敗することが保証されます。

String Text; 
int Number = Integer.parseInt(Text); 

intを解析する前に、textを初期化する必要があります。

+0

あなたは以前のコメントを削除しましたが、実際には 'text'を実際に整数に解析できるものに初期化する必要があることを明確にするために、' Number = Integerを呼び出す前に 'Text = textField.getText();' .parseInt(テキスト); '。 –

関連する問題