`

java计算器

阅读更多
//计算器
// Calculator.java
public class Calculator {

  private static final char NO_OP = '\0';
  private static final char PLUS = '+';
  private static final char SUBTRACT = '-';
  private static final char MULTIPLY = '*';
  private static final char DIVIDE = '/';

  private float  number1 = 0.0F;
  //private float  number2 = Float.NaN;
  private char   operator = NO_OP;

  //等于运算
  public String opEquals(String number) {
    float result;

    if ( operator == NO_OP ) {
      result = parseNumber(number);
    } else {
      result = performOperation(parseNumber(number));
    }
    operator = NO_OP;

    number1 = result;

    return Float.toString(result);
  }

  //加法运算
  public String opAdd(String number) {
    float result;

    if ( operator == NO_OP ) {
      result = parseNumber(number);
    } else {
      result = performOperation(parseNumber(number));
    }
    operator = PLUS;

    number1 = result;

    return Float.toString(result);
  }

  //减法运算
  public String opSubtract(String number) {
    float result;

    if ( operator == NO_OP ) {
      result = parseNumber(number);
    } else {
      result = performOperation(parseNumber(number));
    }
    operator = SUBTRACT;

    number1 = result;

    return Float.toString(result);
  }

  //乘法运算
  public String opMultiply(String number) {
    float result;

    if ( operator == NO_OP ) {
      result = parseNumber(number);
    } else {
      result = performOperation(parseNumber(number));
    }
    operator = MULTIPLY;

    number1 = result;

    return Float.toString(result);
  }

  //除法运算
  public String opDivide(String number) {
    float result;

    if ( operator == NO_OP ) {
      result = parseNumber(number);
    } else {
      result = performOperation(parseNumber(number));
    }
    operator = DIVIDE;

    number1 = result;

    return Float.toString(result);
  }

  //处理运算符
  private float performOperation(float number2) {
    float result = 0.0F;

    switch ( operator ) {
    case PLUS:
      result = number1 + number2;
      break;
    case SUBTRACT:
      result = number1 - number2;
      break;
    case MULTIPLY:
      result = number1 * number2;
      break;
    case DIVIDE:
      result = number1 / number2;
      break;
    }

    return result;
  }

  //将字符串类型转换为浮点型
  private static float parseNumber(String number) {
    float real_number;

    try {
      real_number = Float.parseFloat(number);
    } catch (NumberFormatException e) {
      real_number = Float.NaN;
    }

    return real_number;
  }

}


// CalculatorGUI.java
import java.awt.*;
import java.awt.event.*;

public class CalculatorGUI {

  // 定义按钮
  private Button key0, key1, key2, key3, key4;
  private Button key5, key6, key7, key8, key9;
  private Button keyequal, keyplus, keyminus;
  private Button keyperiod, keymult, keydiv;
 
  // 定义存放按钮的区域
  private Panel buttonArea;
 
  // 定义存放运算结果的区域
  private Label answer;
 
  // 用来实现运算功能的类的对象实例化
  private Calculator calculator;
  private boolean    readyForNextNumber;

  public CalculatorGUI() {
    calculator = new Calculator();
    readyForNextNumber = true;

    answer = new Label("0.0",Label.RIGHT);

    key0 = new Button("0");
    key1 = new Button("1");
    key2 = new Button("2");
    key3 = new Button("3");
    key4 = new Button("4");
    key5 = new Button("5");
    key6 = new Button("6");
    key7 = new Button("7");
    key8 = new Button("8");
    key9 = new Button("9");
    keyequal = new Button("=");
    keyplus = new Button("+");
    keyminus = new Button("-");
    keymult = new Button("*");
    keydiv = new Button("/");
    keyperiod = new Button(".");
    buttonArea = new Panel();
  }

  public void launchFrame() {
    buttonArea.setLayout(new GridLayout(4,4));

    buttonArea.add(key7);
    buttonArea.add(key8);
    buttonArea.add(key9);
    buttonArea.add(keyplus);
    buttonArea.add(key4);
    buttonArea.add(key5);
    buttonArea.add(key6);
    buttonArea.add(keyminus);
    buttonArea.add(key1);
    buttonArea.add(key2);
    buttonArea.add(key3);
    buttonArea.add(keymult);
    buttonArea.add(key0);
    buttonArea.add(keyperiod);
    buttonArea.add(keyequal);
    buttonArea.add(keydiv);

    // 设置事件接收句柄
    OpButtonHanlder op_handler = new OpButtonHanlder();
    NumberButtonHanlder number_handler = new NumberButtonHanlder();
    key0.addActionListener(number_handler);
    key1.addActionListener(number_handler);
    key2.addActionListener(number_handler);
    key3.addActionListener(number_handler);
    key4.addActionListener(number_handler);
    key5.addActionListener(number_handler);
    key6.addActionListener(number_handler);
    key7.addActionListener(number_handler);
    key8.addActionListener(number_handler);
    key9.addActionListener(number_handler);
    keyperiod.addActionListener(number_handler);
    keyplus.addActionListener(op_handler);
    keyminus.addActionListener(op_handler);
    keymult.addActionListener(op_handler);
    keydiv.addActionListener(op_handler);
    keyequal.addActionListener(op_handler);

    // 新建一个帧,并且加上消息监听
    Frame f = new Frame("Calculator");
    f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
  System.exit(0);
}
    });
    f.setSize(200, 200);

    f.add(answer, BorderLayout.NORTH);
    f.add(buttonArea, BorderLayout.CENTER);
    f.setVisible (true);
  }

  //响应按钮事件,并根据不同的按钮事件进行不同的运算
  private class OpButtonHanlder implements ActionListener {
    public void actionPerformed(ActionEvent event) {
      char  operator = event.getActionCommand().charAt(0);
      String result = "";
      switch  ( operator ) {
      case '+':
result = calculator.opAdd(answer.getText());
break;
      case '-':
result = calculator.opSubtract(answer.getText());
break;
      case '*':
result = calculator.opMultiply(answer.getText());
break;
      case '/':
result = calculator.opDivide(answer.getText());
break;
      case '=':
result = calculator.opEquals(answer.getText());
break;
      }
      answer.setText(result);
      readyForNextNumber = true;
    }
  }

  //处理连续运算时主界面的显示
  private class NumberButtonHanlder implements ActionListener {
    public void actionPerformed(ActionEvent event) {
      if ( readyForNextNumber ) {
answer.setText(event.getActionCommand());
readyForNextNumber = false;
      } else {
answer.setText(answer.getText() + event.getActionCommand().charAt(0));
      }
    }
  }

//主函数,也是该应用程序的执行入口处
  public static void main(String args[]) {
    CalculatorGUI calcGUI = new CalculatorGUI();
    calcGUI.launchFrame();
  }
}
分享到:
评论

相关推荐

    java计算器代码(gui界面)

    java计算器代码,初学者专用java计算器代码,初学者专用java计算器代码,初学者专用java计算器代码,初学者专用java计算器代码,初学者专用java计算器代码,初学者专用java计算器代码,初学者专用

    JAVA计算器 报告和程序

    JAVA 计算器 实验报告书,内附完整代码,可用。

    java计算器java计算器

    java计算器java计算器java计算器java计算器java计算器java计算器java计算器java计算器java计算器java计算器java计算器java计算器java计算器java计算器java计算器java计算器java计算器java计算器

    java计算器实验报告

    在这个“Java计算器实验报告”中,我们探讨了一个基于Java编程语言的计算器应用程序的开发过程。这个实验的主要目标是设计一个用户界面,实现基本的数学运算,包括加法、减法、乘法和除法,同时处理可能出现的异常...

    java 计算器(已实现)

    java 计算器java 计算器java 计算器java 计算器java 计算器java 计算器java 计算器java 计算器java 计算器

    java计算器程序代码

    Java 计算器程序代码解析 Java 计算器程序代码是 Java 课上老师提供的编译源代码,内容详细,适合研究学习。下面对代码的标题、描述、标签和部分内容进行详细解析。 标题解析 Java 计算器程序代码的标题为“Java ...

    java计算器,带历史记录功能

    在这个项目中,我们看到的"java计算器,带历史记录功能"显然包含了一个核心的类——`Computer.java`,这个类可能实现了计算器的所有逻辑和界面。 首先,`Computer.java`文件很可能是主程序的入口点,它可能继承自...

    用AWT包实现的JAVA计算器

    本项目“用AWT包实现的JAVA计算器”旨在通过AWT来构建一个功能完备的计算器应用。下面将详细介绍这个项目中的关键知识点。 1. **AWT组件**: - AWT提供了各种基本组件,如按钮(Button)、文本字段(TextField)、...

    java计算器+报告

    【标题】"java计算器+报告"揭示了这个项目的核心内容,即一个用Java语言实现的计算器程序,并且包含了相应的项目报告。这表明该程序不仅是一个简单的计算工具,可能还涉及了高级功能,如复杂数学运算、图形界面或者...

    java计算器 期末作业

    【Java计算器实现详解】 在Java编程的学习过程中,创建一个计算器是一项常见的练习任务,它能帮助学生深入理解面向对象编程的概念,以及如何处理用户输入和输出。这个“java计算器”项目,作为期末作业,旨在检验...

    JAVA计算器 课程设计报告

    《JAVA计算器课程设计详解》 在计算机编程领域,设计并实现一个计算器程序是常见的课程设计任务,这有助于学习者深入理解编程语言的基本语法和逻辑控制。在这个Java计算器课程设计报告中,我们将探讨如何构建一个...

    Java计算器实训报告

    Java计算器实训报告旨在通过设计和实现一个计算器程序,让学生深入理解和掌握Java编程语言以及面向对象设计的基本原理。这个计算器分为普通计算器和科学计算器两种模式,提供了丰富的数学运算功能。 在需求分析部分...

    手机上的JAVA计算器

    Java计算器是基于Java编程语言开发的一款简单应用,适用于智能手机用户。它通常包含了基本的数学运算功能,如加、减、乘、除,以及可能的更高级功能,如求平方根、指数运算、对数等。在Java中实现计算器涉及到许多...

    java 计算器 源代码

    Java计算器源代码是一个典型的编程项目,它展示了如何在Java中实现一个简单的图形用户界面(GUI)应用程序,用于执行基本的算术运算。这个项目通常包括加、减、乘、除等基本功能,以及可能的括号支持和错误处理。...

    java 计算器 实验报告

    **实验报告:简易Java计算器制作** 一、实验目的及要求 本实验旨在加深对Java编程语言的理解,特别是其面向对象编程特性。通过设计并实现一个简单的计算器,学习者将掌握以下知识点: 1. Java基本语法:包括变量...

    带有清零功能的小型JAVA计算器完整源代码!

    Java 计算器完整源代码实现详解 在本资源中,我们将实现一个完整的 Java 计算器应用程序,该应用程序具有基本的计算功能,如加、减、乘、除、清零等。下面我们将详细解释该应用程序的实现细节。 Java Swing 框架 ...

    Calculator_java计算器_

    在本项目中,我们讨论的是一个使用Java编程...以上就是构建一个Java计算器应用时涉及的主要技术点。通过这个项目,开发者可以巩固对Java语言的理解,增强面向对象编程的实践能力,以及提升处理用户输入和异常的能力。

    java 计算器 小程序(精简版)

    通过以上知识点的解释,我们可以理解这个Java计算器小程序的基本工作原理。实际的源代码会包含类定义、方法实现以及具体的逻辑处理,对于学习Java编程和理解程序设计思路是非常有价值的。如果你对Java编程感兴趣,...

    简易计算器.rar_java 计算器_java 计算_java计算器_计算器

    【描述】"简易的JAVA计算器" 提供了一个直观的示例,展示了如何在Java中设计一个用户界面以及处理用户的输入和输出。这个项目可能包含了一个独立的源代码文件(Calculator.java)和编译后的类文件(Calculator.class...

Global site tag (gtag.js) - Google Analytics