2016-04-06 15 views
-5

çökmesini Ben tüm internet üzerinden baktım ve bu benim programına neden oluyor neden bulamıyorum. Temelde bunun bir sayı dizisi yapar bir TextField yapmaya çalışıyorum ve bu dize bir tamsayı dönüştü ve benInteger.parseInt kullanarak benim program

çöktü Integer.parseInt kullanma girişiminde zaman etiket sayısı 1 olarak değiştirilir İşte benim Kod

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); 


    } 

} 

Bu yukarı-Sen unintialized dize metin var

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

Üzgünüz çözmek, bunlarla. Yayınınızı düzenleyin ve tam yığın izlemesini eklemeniz gerekir, ayrıca programınızdaki özel durumu atar. Sadece bu durumda denetimdeki hata çok açık olduğu için gerekli bilgileri içermemeniz anlamına gelmez. –

+0

Nasıl çöküyor? hata mesajı nedir? Yığın izini paylaşmaya ne dersin? – dimo414

cevap

0

Metin başlatılmamış, bu nedenle bir NumberFormatException verir. Burada, iletilen dizge ayrıştırılabilir bir tamsayı içermiyorsa, NumberFormatException öğesini Integer.parseInt() yöntemi verecektir.

Kullanım

String Text = "0" _ yetersiz "Bu çöktü" _ problemi

+1

Bu değişikliklerimi etiketim 0 olarak değiştirdi, hedefim girdiğim bir sayıya değiştirmektir +1 –

+0

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

5

gösterir mesajı olmasıdır. Bir int ayrıştırmaya çalışırken bu başarısız olur.

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

Sen int ayrıştırmak denemeden önce bu text başlatmak gerekir.

+0

Önceki yorumunuzu sildiniz, ancak sadece 'text' i gerçekten bir tamsayıya ayrıştırılabilecek bir şeye başlatmanız gerektiğini açıklığa kavuşturmak için, yani 'Text = textField.getText(); .parseInt (metin); '. –

İlgili konular