gpt4 book ai didi

Java - num1 = event.getActionCommand() 不起作用(无法将字符串设置为 Int)

转载 作者:行者123 更新时间:2023-11-29 05:17:24 25 4
gpt4 key购买 nike

我曾尝试寻找其他明显的结果,但由于某种原因,当我添加它们时,我的程序有一半停止工作。基本上,我试图从 JTextField 输入这两个数字并将它们相加,但是,我不能将两个字符串相加。我试过将结果转换为整数,但从 String 到 Int 的转换显然是不可能的。我可能会遗漏一些明显的东西,但我是初学者,我需要一些建议,谢谢。

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

public class GUI extends JFrame {
private JTextField cmd = new JTextField(5);
private JButton cancel = new JButton("Cancel");
private JLabel Help = new JLabel("Enter First Number");
private int num1;
private int num2;
private int ans = num1 + num2;

public GUI() {
super("Command Line - Sum");
setLayout(new FlowLayout());
System.out.println("Successfully opened sum window.");
add(cmd);
add(Help);
add(cancel);
cmdHandler handler = new cmdHandler();
cmd.addActionListener(handler);
cancel.addActionListener(handler);
}

public static void closeWindow() {
GUI g = new GUI();
g.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
g.setSize(275, 180);
g.setVisible(true);
g.setResizable(false);
g.setLocation(0, 550);
}

private class cmdHandler implements ActionListener {
int a = 0;

public void actionPerformed(ActionEvent event) {
if (event.getSource().equals(cmd)) {
if (a == 0) {
cmd.setText("");
a++;
Help.setText("Enter Second Number");
} else if (a == 1) {
cmd.setText(num1 + " + " + num2 + " = " + ans);
a++;
Help.setText("Your final result is " + ans);
} else if (a == 2) {
closeWindow();
GUI.this.dispose();
}
} else if (event.getSource().equals(cancel)) {
closeWindow();
GUI.this.dispose();
}
}
}
}

抱歉有任何重复,但我找不到适合我情况的解决方案。

最佳答案

不要转换而是解析..

int number = Integer.parseInt(testString);

double doubleNumber = Double.parseDouble(testString);

例如,

  public void actionPerformed(ActionEvent event) {
if (event.getSource().equals(cmd)) {
int number = 0;
try {
number = Integer.parseInt(cmd.getText());
} catch (NumberFormatException e) {
// TODO: figure out what to do if bad input entered
}

// ..........

注释

  • 在您的代码中,您在创建程序时计算 ans,但这将不起作用,因为用户尚未更新任何内容。因此,计算需要在 ActionListener 本身中完成,这应该让用户有时间首先输入数据。
  • 我们经常将上面的解析包装在 try/catch block 中并捕获 NumberFormatExceptions,因为这将使我们能够找到并响应错误的输入,例如非数字输入。
  • 与其交换 View ,不如大大简化事情并创建一个包含两个 JTextField、一个计算按钮和一个答案 JLabel 的窗口。

关于Java - num1 = event.getActionCommand() 不起作用(无法将字符串设置为 Int),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26047190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com