Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 试图将textfield值转换为int/double,数字格式异常错误_Java_User Interface_Numberformatexception - Fatal编程技术网

Java 试图将textfield值转换为int/double,数字格式异常错误

Java 试图将textfield值转换为int/double,数字格式异常错误,java,user-interface,numberformatexception,Java,User Interface,Numberformatexception,这就是问题所在,我试图从文本字段'num1'中获取值,将其转换为int/long/double,这样我就可以在下面的侦听器中的数学函数中使用它 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 m

这就是问题所在,我试图从文本字段'num1'中获取值,将其转换为int/long/double,这样我就可以在下面的侦听器中的数学函数中使用它

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 = new JTextField("Enter First Number:");
    boob = num1.getText();
    numb1 = Long.parseLong(boob);
    add(num1);
这就是问题所在,我试图从文本字段'num1'中获取值,将其转换为int/long/double,这样我就可以在下面的侦听器中的数学函数中使用它

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 = new JTextField("Enter First Number:");
    boob = num1.getText();
    numb1 = Long.parseLong(boob);
    add(num1);
}

我尝试了很多方法,最终得到了许多冗余变量。这是我一直得到的错误

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


}
线程“main”java.lang.NumberFormatException中的异常:对于输入字符串:“输入第一个数字:”
位于java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
位于java.lang.Long.parseLong(Long.java:589)
位于java.lang.Long.parseLong(Long.java:631)
在calc.calc1.(calc1.java:37)
位于calc.calc1.main(calc1.java:135)

创建用值初始化的输入文本字段
“输入一些数字:”
,然后立即获取值(提示:刚才传递的值),并将其转换为
长的
。当然,这将抛出一个
NumberFormatException

你应该做两件事:

  • (临时)将该消息放在输入字段旁边的
    JLabel
  • (强制)不要在创建输入字段后立即获取输入值并进行转换,这没有任何意义。把那部分留给听众听

如果您仍然无法找到解决方法,请尝试一个只有一个文本字段的较小程序,使其工作,并在此基础上进行构建。

我现在正在构建一个新程序,谢谢您