Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.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 使用Integer.parseInt会使我的程序崩溃_Java - Fatal编程技术网

Java 使用Integer.parseInt会使我的程序崩溃

Java 使用Integer.parseInt会使我的程序崩溃,java,Java,我已经在互联网上搜索过了,但找不到我的程序发生这种情况的原因。 基本上,我试图创建一个文本字段,该字段生成一个数字字符串,该字符串被转换为整数,标签被更改为数字+1 每当我尝试使用Integer.parseInt时,它就会崩溃 这是我的密码 public class dfadsfa { private JFrame frame; private JTextField textField; /** * Launch the application.

我已经在互联网上搜索过了,但找不到我的程序发生这种情况的原因。 基本上,我试图创建一个文本字段,该字段生成一个数字字符串,该字符串被转换为整数,标签被更改为数字+1 每当我尝试使用Integer.parseInt时,它就会崩溃

这是我的密码

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)
java.lang.NumberFormatException:用于输入字符串:“
位于java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
位于java.lang.Integer.parseInt(Integer.java:592)
在java.lang.Integer.parseInt(Integer.java:615)
在dfadsfa(dfadsfa.java:42)
dfadsfa$1.run(dfadsfa.java:21)
在java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)中
位于java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
在java.awt.EventQueue.access$500(EventQueue.java:97)
在java.awt.EventQueue$3.run(EventQueue.java:709)
在java.awt.EventQueue$3.run(EventQueue.java:703)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
位于java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
位于java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
在java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)中
位于java.awt.EventDispatchThread.PumpeEventsforHierarchy(EventDispatchThread.java:105)
位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
在java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

您有一个未初始化的字符串文本。当试图解析int时,这肯定会失败

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

您应该在尝试解析int之前初始化此
文本。

文本未初始化,因此它会给出NumberFormatException。 这里,如果传递的字符串不包含可解析的整数,则Integer.parseInt()方法将给出NumberFormatException

使用


String Text=“0”
来解决问题

很抱歉,“它崩溃了”是不够的。您必须发布并包含完整的堆栈跟踪,以及标识程序中引发异常的行。仅仅因为在这种情况下,错误在检查时是明显的,并不意味着你不应该包含所需的信息。它是如何崩溃的?错误消息是什么?共享堆栈跟踪如何?这将我的标签更改为0,我的目标是将其更改为我输入的数字+1使用
Text=textField.getText();int out=Integer.parseInt(文本)+1;lblNumber.setText(out+“”)
您删除了先前的注释,但只是为了澄清,您需要将
text
初始化为实际可以解析为整数的内容,即您应该调用
text=textField.getText()Number=Integer.parseInt(Text)之前,使用code>