2017-05-26 11 views
0
package calc; 

import java.awt.event.*; 
import javax.swing.*; 
import java.awt.*; 

public class calc1 extends JFrame { 

public JButton plus; 
public JButton minus; 
public JButton multiply; 
public JButton divide; 
public JTextField num1; 
public JTextField num2; 
public JTextField res; 
public long numb1; 
public long numb2; 
public long result; 
public String boob; 
public String boob2; 






public calc1(){ 


    setSize(400,400); 
    setLayout(new FlowLayout()); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setVisible(true); 

這是我想從文本框「NUM1」的值來把它變成一個int /長/雙,所以我能問題在我的聽衆下面的數學函數中使用它。試圖把文本框的值轉換成int /雙,數字格式異常錯誤

num1 = new JTextField("Enter First Number:"); 
    boob = num1.getText(); 
    numb1 = Long.parseLong(boob); 
    add(num1); 

這是我想從文本框「NUM1」的值的問題把它變成一個int /長/雙,所以我可以用它在數學函數在我的聽衆吼叫。

num2 = new JTextField("Enter Second Number:"); 
    boob2 = num2.getText(); 
    numb2 = Long.parseLong(boob2); 
    add(num2); 



    plus = new JButton("+"); 
    add(plus); 

    minus = new JButton("-"); 
    add(minus); 

    multiply = new JButton("*"); 
    add(multiply); 

    divide = new JButton(":"); 
    add(divide); 

    listener1 boo1 = new listener1(); 
    listener2 boo2 = new listener2(); 
    listener3 boo3 = new listener3(); 
    listener4 boo4 = new listener4(); 




    divide.addActionListener(boo1); 
    multiply.addActionListener(boo2); 
    minus.addActionListener(boo3); 
    plus.addActionListener(boo4); 




    } 

public class listener1 implements ActionListener{ 
    public void actionPerformed(ActionEvent boo1){ 


     result = numb1/numb2; 
     String ahmood = String.valueOf(result); 
     res = new JTextField(ahmood); 
     add(res); 


    } 

} 

public class listener2 implements ActionListener{ 
    public void actionPerformed(ActionEvent boo2){ 


     result = numb1*numb2; 
     String ahmood = String.valueOf(result); 
     res = new JTextField(ahmood); 
     add(res); 




    } 

} 

public class listener3 implements ActionListener{ 
    public void actionPerformed(ActionEvent boo3){ 

     result = numb1-numb2; 
     String ahmood = String.valueOf(result); 
     res = new JTextField(ahmood); 
     add(res); 

    } 

} 

public class listener4 implements ActionListener{ 
    public void actionPerformed(ActionEvent boo4){ 

     result = numb1+numb2; 
     String ahmood = String.valueOf(result); 
     res = new JTextField(ahmood); 
     add(res); 


    } 

} 

public static void main(String args[]){ 

    calc1 joss = new calc1(); 
    joss.setVisible(true); 


} 

}

我試過很多方法,我結束了與許多冗餘變量。這是我不斷收到的錯誤。

Exception in thread "main" java.lang.NumberFormatException: For input string: "Enter First Number:" 
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 
    at java.lang.Long.parseLong(Long.java:589) 
    at java.lang.Long.parseLong(Long.java:631) 
    at calc.calc1.<init>(calc1.java:37) 
    at calc.calc1.main(calc1.java:135) 

回答

0

創建與價值"Enter some Number:"初始化輸入文本字段,然後立即着手獲取值(提示:你剛剛通過了一個),並將其轉換爲一個Long。當然這會拋出一個NumberFormatException

你應該做兩件事情:

  • (兼)把該消息在旁邊的輸入字段JLabel
  • (必填)在創建輸入字段後,不要獲取輸入值並立即將其轉換,這是沒有意義的。爲聽衆保留這部分內容。

如果你仍然無法找到自己的方式,嘗試一個只有一個文本字段的小程序,使其工作,並在此基礎上。

+0

我正在建造一個新的,謝謝 –