java - 使用同一个 jTextfield 中的两个数字来执行计算

标签 java

作为作业的一部分,我已经完成了一个基本的计算器。 我目前正在使用两个文本域来输入操作数。然后我按下运算符(operator)以显示答案。

但是,两个整数应该从同一个文本字段输入,那么我该怎么做呢?

我考虑过使用数组或堆栈,但我无法让它工作。

我在下面包含了我的代码...计算器已准备就绪,一切正常,它执行乘法除法加减法,并在文本区域显示答案,要相加或相减的两个数字...是输入两个单独的字段,一旦按下操作数,计算就完成了(逆波兰表示法),但是,我怎样才能消除第二个字段的使用,只需将第一个值输入文本字段,按回车键,然后插入第二个值进入同一个文本字段并按回车键。将第一个保存为 valA,将第二个保存为 val B(整数)。但它必须是相同的文本字段。

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * Calcu.java
 *
 * Created on Feb 9, 2011, 10:11:37 PM
 */

/**
 *
 * @author Halaseh
 */
public class Calcu extends javax.swing.JFrame {

    /** Creates new form Calcu */
    public Calcu() {
        initComponents();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jScrollPane1 = new javax.swing.JScrollPane();
        jTextArea1 = new javax.swing.JTextArea();
        jTextField1 = new javax.swing.JTextField();
        jTextField2 = new javax.swing.JTextField();
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        jButton3 = new javax.swing.JButton();
        jButton4 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jTextArea1.setColumns(20);
        jTextArea1.setRows(5);
        jScrollPane1.setViewportView(jTextArea1);

        jTextField1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jTextField1ActionPerformed(evt);
            }
        });

        jTextField2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jTextField2ActionPerformed(evt);
            }
        });

        jButton1.setText("+");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        jButton2.setText("-");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });

        jButton3.setText("*");
        jButton3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton3ActionPerformed(evt);
            }
        });

        jButton4.setText("/");
        jButton4.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton4ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                        .addComponent(jTextField1, javax.swing.GroupLayout.Alignment.LEADING)
                        .addComponent(jTextField2, javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                            .addComponent(jButton3)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(jButton4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                        .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                            .addComponent(jButton1)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(jButton2))))
                .addContainerGap(222, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jButton1)
                    .addComponent(jButton2))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jButton3)
                    .addComponent(jButton4))
                .addContainerGap(69, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
int valA = Integer.parseInt(jTextField1.getText());
int valB = Integer.parseInt(jTextField2.getText());        // TODO add your handling code here:

        int valC = valA+valB;
        jTextArea1.append(Integer.toString(valC));
        jTextArea1.append("\n");


    }

    private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {

 int valA = Integer.parseInt(jTextField1.getText());
    }

    private void jTextField2ActionPerformed(java.awt.event.ActionEvent evt) {
int valB = Integer.parseInt(jTextField2.getText());        // TODO add your handling code here:
    }

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
int valA = Integer.parseInt(jTextField1.getText());
int valB = Integer.parseInt(jTextField2.getText());        // TODO add your handling code here:

        int valC = valA-valB;
        jTextArea1.append(Integer.toString(valC));
        jTextArea1.append("\n");        // TODO add your handling code here:
    }

    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
int valA = Integer.parseInt(jTextField1.getText());
int valB = Integer.parseInt(jTextField2.getText());        // TODO add your handling code here:

        int valC = valA*valB;
        jTextArea1.append(Integer.toString(valC));
        jTextArea1.append("\n");        // TODO add your handling code here:
    }

    private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
int valA = Integer.parseInt(jTextField1.getText());
int valB = Integer.parseInt(jTextField2.getText());        // TODO add your handling code here:

        int valC = valA/valB;
        jTextArea1.append(Integer.toString(valC));
        jTextArea1.append("\n");        // TODO add your handling code here:
    }

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Calcu().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JButton jButton4;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTextArea jTextArea1;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField2;
    // End of variables declaration

}

最佳答案

您必须读取输入并以某种方式解析字符串。

如果您只需要期望 1+3 或 4*5 等形式的东西,您可以通过询问是否存在任何运算符符号来检查运算

if(inputString.indexOf("+") >= 0) { 
    //handle addition
}

然后您可以使用以下方法获得这两个数字:

String[] numbers = inputString.split("+");
Integer numberOne = Integer.parseInt(numbers[0]);
...

这做出了很多假设,通常您应该检查潜在的问题,但这仅取决于项目的指定方式。

关于java - 使用同一个 jTextfield 中的两个数字来执行计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4951917/

相关文章:

java - Java 常量可以在 Play! 中使用吗?模板?

java - TreeBag 的比较器按出现次数排序

java - 是否中断 sleep 线程释放对象上的锁的异常

java - Android 在 Activity 上绘制出一个类

java - Java继承实例变量

java - 在不可变类中,为什么字段被标记为私有(private)?

java - 一次性局部变量是final的是什么意思?

java - 撒克逊-XPST0017 : Cannot find a matching 1-argument function named

java - Postgresql 从表中返回 SETOF 行

java - 如何将用户数据与我的 Swing 组件分开?