21xrx.com
2024-11-05 18:39:37 Tuesday
登录
文章检索 我的文章 写文章
Java程序基础作业:实现一个简单的计算器
2023-06-17 14:32:41 深夜i     --     --
Java 计算器 GUI

在这篇文章中,我们将会介绍如何使用Java语言实现一个简单的计算器。这个计算器将支持基本的加、减、乘、除等运算,使用GUI界面进行交互,并且具有一定的容错性,可以处理一些异常情况。

首先是实现界面,在Java中可以使用Swing库来实现GUI界面。我们可以创建一个JFrame对象,然后往里面添加需要的组件,比如各种按钮和文本框。在按钮上添加ActionListener,当用户点击按钮时,程序将会调用对应的运算方法,并更新显示结果的文本框。

接下来是实现运算方法。我们需要定义一个Calculator类,其中包含多个静态方法,分别对应不同的运算。比如,加法方法可以接受两个double类型的参数,返回它们的和。在计算过程中,我们还需要处理一些异常情况,比如除数为0或者输入非数字等情况,可以使用try-catch语句块来处理这些异常。

最后,在主函数中创建一个Calculator对象,并把它传入GUI界面,这样就完成了整个计算器程序的实现。

下面是示例代码:


import javax.swing.*;

import java.awt.event.*;

public class Calculator {

  public static double add(double a, double b) {

    return a + b;

  }

  

  public static double subtract(double a, double b)

    return a - b;

  

  

  public static double multiply(double a, double b) {

    return a * b;

  }

  

  public static double divide(double a, double b) throws ArithmeticException {

    if (b == 0) {

      throw new ArithmeticException("Divisor cannot be zero.");

    }

    return a / b;

  }

}

public class CalculatorGUI implements ActionListener {

  private JFrame frame;

  private JTextField num1Field;

  private JTextField num2Field;

  private JTextField resultField;

  

  public CalculatorGUI() {

    frame = new JFrame("Calculator");

    frame.setSize(300, 200);

    frame.setLayout(null);

    

    JLabel num1Label = new JLabel("Number 1:");

    num1Label.setBounds(20, 20, 80, 25);

    frame.add(num1Label);

    

    num1Field = new JTextField(20);

    num1Field.setBounds(100, 20, 165, 25);

    frame.add(num1Field);

    JLabel num2Label = new JLabel("Number 2:");

    num2Label.setBounds(20, 50, 80, 25);

    frame.add(num2Label);

    num2Field = new JTextField(20);

    num2Field.setBounds(100, 50, 165, 25);

    frame.add(num2Field);

    JButton addButton = new JButton("+");

    addButton.setBounds(20, 80, 50, 25);

    addButton.addActionListener(this);

    frame.add(addButton);

    JButton subtractButton = new JButton("-");

    subtractButton.setBounds(80, 80, 50, 25);

    subtractButton.addActionListener(this);

    frame.add(subtractButton);

    JButton multiplyButton = new JButton("*");

    multiplyButton.setBounds(140, 80, 50, 25);

    multiplyButton.addActionListener(this);

    frame.add(multiplyButton);

    JButton divideButton = new JButton("/");

    divideButton.setBounds(200, 80, 50, 25);

    divideButton.addActionListener(this);

    frame.add(divideButton);

    JLabel resultLabel = new JLabel("Result:");

    resultLabel.setBounds(20, 110, 80, 25);

    frame.add(resultLabel);

    resultField = new JTextField(20);

    resultField.setBounds(100, 110, 165, 25);

    resultField.setEditable(false);

    frame.add(resultField);

    frame.setVisible(true);

  }

  

  public void actionPerformed(ActionEvent e) {

    double num1 = Double.parseDouble(num1Field.getText());

    double num2 = Double.parseDouble(num2Field.getText());

    double result;

    try {

      if (e.getActionCommand().equals("+")) {

        result = Calculator.add(num1, num2);

      } else if (e.getActionCommand().equals("-")) {

        result = Calculator.subtract(num1, num2);

      } else if (e.getActionCommand().equals("*")) {

        result = Calculator.multiply(num1, num2);

      } else {

        result = Calculator.divide(num1, num2);

      }

      resultField.setText(Double.toString(result));

    } catch (Exception ex) {

      JOptionPane.showMessageDialog(frame, ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);

    }

  }

}

public class Main {

  public static void main(String[] args) {

    CalculatorGUI calculator = new CalculatorGUI();

  }

}

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复