簡體   English   中英

Java - num1 = event.getActionCommand()不起作用(不能將String設置為Int)

[英]Java - num1 = event.getActionCommand() Doesn't work (Can't set the String as an Int)

我試圖尋找其他明顯的結果,但由於某些原因,當我添加它們時,我的一半程序停止工作。 基本上,我試圖從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塊中並捕獲NumberFormatExceptions,因為這將允許我們查找並響應錯誤的輸入,例如非數字輸入。
  • 而不是交換視圖,為什么不大大簡化事情並創建一個窗口,其中包含兩個JTextField,一個計算按鈕和一個答案JLabel。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM