java分阶段计算设计,java编程计算分段函数

发布时间:2022-11-29

本文目录一览:

  1. 用java设计一个计算器 1.可以没有界面,但要有输入和输出 2.整数,小数,加减乘除,求余,括号
  2. 北大青鸟设计培训:学习Java软件开发的四个阶段?
  3. 如何java设计计算器并实现功能
  4. 学习Java分为几个阶段,分别是什么

用java设计一个计算器 1.可以没有界面,但要有输入和输出 2.整数,小数,加减乘除,求余,括号

package com.electricauto.work.controller;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
/**
 * 一个计算器,与Windows附件自带计算器的标准版功能、界面相仿。 但还不支持键盘操作。
 */
public class jisuanqi extends JFrame implements ActionListener {
    /** 计算器上的键的显示名字 */
    private final String[] KEYS = { "7", "8", "9", "/", "sqrt", "4", "5", "6",
            "*", "%", "1", "2", "3", "-", "1/x", "0", "+/-", ".", "+", "=" };
    /** 计算器上的功能键的显示名字 */
    private final String[] COMMAND = { "Backspace", "CE", "C" };
    /** 计算器左边的M的显示名字 */
    private final String[] M = { " ", "MC", "MR", "MS", "M+" };
    /** 计算器上键的按钮 */
    private JButton keys[] = new JButton[KEYS.length];
    /** 计算器上的功能键的按钮 */
    private JButton commands[] = new JButton[COMMAND.length];
    /** 计算器左边的M的按钮 */
    private JButton m[] = new JButton[M.length];
    /** 计算结果文本框 */
    private JTextField resultText = new JTextField("0");
    // 标志用户按的是否是整个表达式的第一个数字,或者是运算符后的第一个数字
    private boolean firstDigit = true;
    // 计算的中间结果。
    private double resultNum = 0.0;
    // 当前运算的运算符
    private String operator = "=";
    // 操作是否合法
    private boolean operateValidFlag = true;
    /**
     * 构造函数
     */
    public jisuanqi() {
        super();
        // 初始化计算器
        init();
        // 设置计算器的背景颜色
        this.setBackground(Color.LIGHT_GRAY);
        this.setTitle("计算器");
        // 在屏幕(500, 300)坐标处显示计算器
        this.setLocation(500, 300);
        // 不许修改计算器的大小
        this.setResizable(false);
        // 使计算器中各组件大小合适
        this.pack();
    }
    /**
     * 初始化计算器
     */
    private void init() {
        // 文本框中的内容采用右对齐方式
        resultText.setHorizontalAlignment(JTextField.RIGHT);
        // 不允许修改结果文本框
        resultText.setEditable(false);
        // 设置文本框背景颜色为白色
        resultText.setBackground(Color.white);
        // 初始化计算器上键的按钮,将键放在一个画板内
        JPanel calckeysPanel = new JPanel();
        // 用网格布局器,4行,5列的网格,网格之间的水平方向间隔为3个象素,垂直方向间隔为3个象素
        calckeysPanel.setLayout(new GridLayout(4, 5, 3, 3));
        for (int i = 0; i < KEYS.length; i++) {
            keys[i] = new JButton(KEYS[i]);
            calckeysPanel.add(keys[i]);
            keys[i].setForeground(Color.blue);
        }
        // 运算符键用红色标示,其他键用蓝色表示
        keys[3].setForeground(Color.red);
        keys[8].setForeground(Color.red);
        keys[13].setForeground(Color.red);
        keys[18].setForeground(Color.red);
        keys[19].setForeground(Color.red);
        // 初始化功能键,都用红色标示。将功能键放在一个画板内
        JPanel commandsPanel = new JPanel();
        // 用网格布局器,1行,3列的网格,网格之间的水平方向间隔为3个象素,垂直方向间隔为3个象素
        commandsPanel.setLayout(new GridLayout(1, 3, 3, 3));
        for (int i = 0; i < COMMAND.length; i++) {
            commands[i] = new JButton(COMMAND[i]);
            commandsPanel.add(commands[i]);
            commands[i].setForeground(Color.red);
        }
        // 初始化M键,用红色标示,将M键放在一个画板内
        JPanel calmsPanel = new JPanel();
        // 用网格布局管理器,5行,1列的网格,网格之间的水平方向间隔为3个象素,垂直方向间隔为3个象素
        calmsPanel.setLayout(new GridLayout(5, 1, 3, 3));
        for (int i = 0; i < M.length; i++) {
            m[i] = new JButton(M[i]);
            calmsPanel.add(m[i]);
            m[i].setForeground(Color.red);
        }
        // 下面进行计算器的整体布局,将calckeys和command画板放在计算器的中部,
        // 将文本框放在北部,将calms画板放在计算器的西部。
        // 新建一个大的画板,将上面建立的command和calckeys画板放在该画板内
        JPanel panel1 = new JPanel();
        // 画板采用边界布局管理器,画板里组件之间的水平和垂直方向上间隔都为3象素
        panel1.setLayout(new BorderLayout(3, 3));
        panel1.add("North", commandsPanel);
        panel1.add("West", calckeysPanel);
        // 建立一个画板放文本框
        JPanel top = new JPanel();
        top.setLayout(new BorderLayout());
        top.add("Center", resultText);
        // 整体布局
        getContentPane().setLayout(new BorderLayout(3, 5));
        getContentPane().add("North", top);
        getContentPane().add("Center", panel1);
        getContentPane().add("West", calmsPanel);
        // 为各按钮添加事件侦听器
        // 都使用同一个事件侦听器,即本对象。本类的声明中有implements ActionListener
        for (int i = 0; i < KEYS.length; i++) {
            keys[i].addActionListener(this);
        }
        for (int i = 0; i < COMMAND.length; i++) {
            commands[i].addActionListener(this);
        }
        for (int i = 0; i < M.length; i++) {
            m[i].addActionListener(this);
        }
    }
    /**
     * 处理事件
     */
    public void actionPerformed(ActionEvent e) {
        // 获取事件源的标签
        String label = e.getActionCommand();
        if (label.equals(COMMAND[0])) {
            // 用户按了"Backspace"键
            handleBackspace();
        } else if (label.equals(COMMAND[1])) {
            // 用户按了"CE"键
            resultText.setText("0");
        } else if (label.equals(COMMAND[2])) {
            // 用户按了"C"键
            handleC();
        } else if ("0123456789.".indexOf(label) >= 0) {
            // 用户按了数字键或者小数点键
            handleNumber(label);
            // handlezero(zero);
        } else {
            // 用户按了运算符键
            handleOperator(label);
        }
    }
    /**
     * 处理Backspace键被按下的事件
     */
    private void handleBackspace() {
        String text = resultText.getText();
        int i = text.length();
        if (i > 0) {
            // 退格,将文本最后一个字符去掉
            text = text.substring(0, i - 1);
            if (text.length() == 0) {
                // 如果文本没有了内容,则初始化计算器的各种值
                resultText.setText("0");
                firstDigit = true;
                operator = "=";
            } else {
                // 显示新的文本
                resultText.setText(text);
            }
        }
    }
    /**
     * 处理数字键被按下的事件
     *
     * @param key
     */
    private void handleNumber(String key) {
        if (firstDigit) {
            // 输入的第一个数字
            resultText.setText(key);
        } else if ((key.equals(".")) && (resultText.getText().indexOf(".") < 0)) {
            // 输入的是小数点,并且之前没有小数点,则将小数点附在结果文本框的后面
            resultText.setText(resultText.getText() + ".");
        } else if (!key.equals(".")) {
            // 如果输入的不是小数点,则将数字附在结果文本框的后面
            resultText.setText(resultText.getText() + key);
        }
        // 以后输入的肯定不是第一个数字了
        firstDigit = false;
    }
    /**
     * 处理C键被按下的事件
     */
    private void handleC() {
        // 初始化计算器的各种值
        resultText.setText("0");
        firstDigit = true;
        operator = "=";
    }
    /**
     * 处理运算符键被按下的事件
     *
     * @param key
     */
    private void handleOperator(String key) {
        if (operator.equals("/")) {
            // 除法运算
            // 如果当前结果文本框中的值等于0
            if (getNumberFromText() == 0.0) {
                // 操作不合法
                operateValidFlag = false;
                resultText.setText("除数不能为零");
            } else {
                resultNum /= getNumberFromText();
            }
        } else if (operator.equals("1/x")) {
            // 倒数运算
            if (resultNum == 0.0) {
                // 操作不合法
                operateValidFlag = false;
                resultText.setText("零没有倒数");
            } else {
                resultNum = 1 / resultNum;
            }
        } else if (operator.equals("+")) {
            // 加法运算
            resultNum += getNumberFromText();
        } else if (operator.equals("-")) {
            // 减法运算
            resultNum -= getNumberFromText();
        } else if (operator.equals("*")) {
            // 乘法运算
            resultNum *= getNumberFromText();
        } else if (operator.equals("sqrt")) {
            // 平方根运算
            resultNum = Math.sqrt(resultNum);
        } else if (operator.equals("%")) {
            // 百分号运算,除以100
            resultNum = resultNum / 100;
        } else if (operator.equals("+/-")) {
            // 正数负数运算
            resultNum = resultNum * (-1);
        } else if (operator.equals("=")) {
            // 赋值运算
            resultNum = getNumberFromText();
        }
        if (operateValidFlag) {
            // 双精度浮点数的运算
            long t1;
            double t2;
            t1 = (long) resultNum;
            t2 = resultNum - t1;
            if (t2 == 0) {
                resultText.setText(String.valueOf(t1));
            } else {
                resultText.setText(String.valueOf(resultNum));
            }
        }
        // 运算符等于用户按的按钮
        operator = key;
        firstDigit = true; // 这个地方太tm巧妙了想好几天, 先进行上一次操作,再将本次操作(最后一次操作)赋给操作,所以每次操作前都先进行上一次操作,默认操作为"=" 挺nb
        operateValidFlag = true;
    }
    /**
     * 从结果文本框中获取数字
     *
     * @return
     */
    private double getNumberFromText() {
        double result = 0;
        try {
            result = Double.valueOf(resultText.getText()).doubleValue(); // 显示文字后不会蹦出
        } catch (NumberFormatException e) {
        }
        return result;
    }
    public static void main(String args[]) {
        jisuanqi calculator1 = new jisuanqi();
        calculator1.setVisible(true);
        calculator1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

代码比较多,放在任何一个项目里都行,新建一个叫做 jisuanqi 的Java文件,粘贴进去即可。会有一个错误是包位置的选择,点击错误选择正确的包位置就可以了,无错误后执行文件最下面的main函数,就会出现计算器。有不懂的可以继续问,望采纳~!

北大青鸟设计培训:学习Java软件开发的四个阶段?

刚进入Java领域的新人在学习中经历了种种困惑,例如:在学习Java的过程中需要注意什么,应该掌握的技能有哪些,各大企业对Java工程师有什么要求,Java工程师的职业发展计划有哪些?这些都是需要认真考虑的,下面青岛计算机学院为大家介绍从四个阶段学习Java软件开发。

一、理论阶段

在理论的学习阶段,首先,有必要从包含变量说明,条件判定,循环,函数记述等Java基础语法开始学习。 此外,还需要了解Web相关的基础,例如HTTP协议,Web应用程序的BS体系结构。 青岛IT培训认为数据库是Java应用系统中不可缺少的永久部件,理论学习阶段需要掌握SQL句法相关知识。

二、开发阶段

经过一个理论阶段的学习,您一定已经掌握了Java的基本知识。 在进入开发阶段时,需要掌握Java项目日常开发中需要用到的一些技能。 俗话说“工欲善其事,必先利其器”,所以青岛北大青鸟认为必须首先掌握Java常见的开发工具和开发环境。

三、进阶阶段

当掌握了基本的开发技能,在进阶阶段主要培养开发人员在实际典型的业务场景中锻炼,提高开发效率,解决实际问题的能力。

四、实战阶段

计算机软件开发是一个非常注重实战的领域。 在Java学习的过程中,我们必须有多个实用的项目来帮助你巩固以前的学习成果。 青岛Java培训认为这对于你以后进入公司开展实际业务非常有帮助。

如何java设计计算器并实现功能

Java设计计算器,主要是使用Java Swing,对每个按钮进行监听,实现相关功能,如下代码:

package com.qiu.lin.he;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
public class Jisuanqi extends JFrame implements ActionListener {
    private static final long serialVersionUID = 1L;
    Result result = new Result(); // 定义text的面板
    Number_Key number_key = new Number_Key(); // 定义按钮面板
    // 当点击按钮+、-、*、/时,com = true
    boolean com = false;
    // 当i=0时说明是我们第一次输入,字符串text不会累加
    int i = 0;
    // 存放text的内容
    String text = "";
    // 存放点击按钮+、-、*、/之前的数值
    double defbutton = 0;
    // +、-、*、/的代号分别为1,2,3,4
    int symbol = 0;
    // 构造函数
    Jisuanqi() {
        super("WangJiao"); // 设定标题
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设定关闭窗体时退出程序
        JPanel pane = new JPanel(); // 定义主面板
        pane.setLayout(new BorderLayout());
        setBounds(380, 220, 30, 80); // 前两个参数是在屏幕上显示的坐标,后两个是大小
        // 替换图标
        ImageIcon icon = new ImageIcon("F:1.GIF");
        setIconImage(icon.getImage());
        pane.add(result, BorderLayout.NORTH);
        pane.add(number_key, BorderLayout.CENTER);
        pane.add(number_key.equal, BorderLayout.SOUTH);
        number_key.one.addActionListener(this); // 对1按钮添加监听事件
        number_key.two.addActionListener(this); // 对2按钮添加监听事件
        number_key.three.addActionListener(this); // 对3按钮添加监听事件
        number_key.four.addActionListener(this); // 对4按钮添加监听事件
        number_key.five.addActionListener(this); // 对5按钮添加监听事件
        number_key.six.addActionListener(this); // 对6按钮添加监听事件
        number_key.seven.addActionListener(this); // 对7按钮添加监听事件
        number_key.eight.addActionListener(this); // 对8按钮添加监听事件
        number_key.nine.addActionListener(this); // 对9按钮添加监听事件
        number_key.zero.addActionListener(this); // 对0按钮添加监听事件
        number_key.ce.addActionListener(this); // 对置零按钮添加监听事件
        number_key.plus.addActionListener(this); // 对+按钮添加监听事件
        number_key.equal.addActionListener(this); // 对=按钮添加监听事件
        number_key.sub.addActionListener(this); // 对-按钮添加监听事件
        number_key.mul.addActionListener(this); // 对*按钮添加监听事件
        number_key.div.addActionListener(this); // 对/按钮添加监听事件
        number_key.point.addActionListener(this); // 对.按钮添加监听事件
        setContentPane(pane);
        pack(); // 初始化窗体大小为正好盛放所有按钮
    }
    // 各个按钮触发的事件
    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == number_key.one) {
            if (com || i == 0) {
                result.text.setText("1");
                com = false;
                i = 1;
            } else {
                text = result.text.getText();
                result.text.setText(text + "1");
            }
        } else if (e.getSource() == number_key.two) {
            if (com || i == 0) {
                result.text.setText("2");
                com = false;
                i = 1;
            } else {
                text = result.text.getText();
                result.text.setText(text + "2");
            }
        } else if (e.getSource() == number_key.three) {
            if (com || i == 0) {
                result.text.setText("3");
                com = false;
                i = 1;
            } else {
                text = result.text.getText();
                result.text.setText(text + "3");
            }
        } else if (e.getSource() == number_key.four) {
            if (com || i == 0) {
                result.text.setText("4");
                com = false;
                i = 1;
            } else {
                text = result.text.getText();
                result.text.setText(text + "4");
            }
        } else if (e.getSource() == number_key.five) {
            if (com || i == 0) {
                result.text.setText("5");
                com = false;
                i = 1;
            } else {
                text = result.text.getText();
                result.text.setText(text + "5");
            }
        } else if (e.getSource() == number_key.six) {
            if (com || i == 0) {
                result.text.setText("6");
                com = false;
                i = 1;
            } else {
                text = result.text.getText();
                result.text.setText(text + "6");
            }
        } else if (e.getSource() == number_key.seven) {
            if (com || i == 0) {
                result.text.setText("7");
                com = false;
                i = 1;
            } else {
                text = result.text.getText();
                result.text.setText(text + "7");
            }
        } else if (e.getSource() == number_key.eight) {
            if (com || i == 0) {
                result.text.setText("8");
                com = false;
                i = 1;
            } else {
                text = result.text.getText();
                result.text.setText(text + "8");
            }
        } else if (e.getSource() == number_key.nine) {
            if (com || i == 0) {
                result.text.setText("9");
                com = false;
                i = 1;
            } else {
                text = result.text.getText();
                result.text.setText(text + "9");
            }
        } else if (e.getSource() == number_key.zero) {
            if (com || i == 0) {
                result.text.setText("0");
                com = false;
                i = 1;
            } else {
                text = result.text.getText();
                if (Float.parseFloat(text) > 0 || Float.parseFloat(text) < 0) {
                    result.text.setText(text + "0");
                } else {
                    if (text.trim().indexOf(".") == -1) {
                        result.text.setText(text);
                    } else {
                        result.text.setText(text + "0");
                    }
                }
            }
        } else if (e.getSource() == number_key.ce) {
            result.text.setText("0");
            i = 0;
            com = true;
            defbutton = 0;
        } else if (e.getSource() == number_key.point) {
            if (com || i == 0) {
                result.text.setText("0.");
                com = false;
                i = 1;
            } else {
                text = result.text.getText();
                if (text.trim().indexOf(".") == -1) {
                    result.text.setText(text + ".");
                } else {
                    result.text.setText(text);
                }
            }
        } else if (e.getSource() == number_key.plus) {
            com = true;
            i = 0;
            defbutton = Double.parseDouble(result.text.getText());
            symbol = 1;
        } else if (e.getSource() == number_key.sub) {
            com = true;
            i = 0;
            defbutton = Double.parseDouble(result.text.getText());
            symbol = 2;
        } else if (e.getSource() == number_key.mul) {
            com = true;
            i = 0;
            defbutton = Double.parseDouble(result.text.getText());
            symbol = 3;
        } else if (e.getSource() == number_key.div) {
            com = true;
            i = 0;
            defbutton = Double.parseDouble(result.text.getText());
            symbol = 4;
        } else if (e.getSource() == number_key.equal) {
            switch (symbol) {
                case 1: { // 计算加法
                    double ad = defbutton + Double.parseDouble(result.text.getText());
                    result.text.setText(ad + "");
                    i = 0;
                    text = "";
                    break;
                }
                case 2: { // 计算减法
                    double ad = defbutton - Double.parseDouble(result.text.getText());
                    result.text.setText(String.valueOf(ad));
                    i = 0;
                    text = "";
                    break;
                }
                case 3: { // 计算乘法
                    double ad = defbutton * Double.parseDouble(result.text.getText());
                    result.text.setText(ad + "");
                    i = 0;
                    text = "";
                    break;
                }
                case 4: { // 计算除法
                    double ad = defbutton / Double.parseDouble(result.text.getText());
                    result.text.setText(ad + "");
                    i = 0;
                    text = "";
                    break;
                }
            }
        }
    }
    @SuppressWarnings("deprecation")
    public static void main(String[] args) {
        Jisuanqi loveyou = new Jisuanqi();
        loveyou.show();
    }
}
// 计算器数字按钮定义面板
class Number_Key extends JPanel {
    private static final long serialVersionUID = 1L;
    JButton zero = new JButton("0"); // 数字键0
    JButton one = new JButton("1"); // 数字键1
    JButton two = new JButton("2"); // 数字键2
    JButton three = new JButton("3"); // 数字键3
    JButton four = new JButton("4"); // 数字键4
    JButton five = new JButton("5"); // 数字键5
    JButton six = new JButton("6"); // 数字键6
    JButton seven = new JButton("7"); // 数字键7
    JButton eight = new JButton("8"); // 数字键8
    JButton nine = new JButton("9"); // 数字键9
    JButton plus = new JButton("+");
    JButton sub = new JButton("-");
    JButton mul = new JButton("*");
    JButton div = new JButton("/");
    JButton equal = new JButton("=");
    JButton ce = new JButton("清零"); // 置零键
    JButton point = new JButton(".");
    Number_Key() {
        setLayout(new GridLayout(4, 4, 1, 1)); // 定义布局管理器为网格布局
        setBackground(Color.blue); // 设置背景颜色
        // 添加按钮
        add(one);
        add(two);
        add(three);
        add(four);
        add(five);
        add(six);
        add(seven);
        add(eight);
        add(nine);
        add(zero);
        add(plus);
        add(sub);
        add(mul);
        add(div);
        add(point);
        add(equal);
        add(ce);
    }
}
// 计算器显示结果的窗体
class Result extends JPanel {
    private static final long serialVersionUID = 1L;
    JTextField text = new JTextField("0");
    @SuppressWarnings("deprecation")
    Result() {
        text.setHorizontalAlignment(SwingConstants.RIGHT); // 讲输入的数字或得到的结果在text的右边显示
        text.enable(false); // 文本框不能编辑
        setLayout(new BorderLayout()); // 设定布局管理器边框布局
        add(text, BorderLayout.CENTER); // text放置在窗体的中间
    }
}

运行结果如下:

学习Java分为几个阶段,分别是什么

主要分为5个阶段吧!

第一阶段:Java编程入门

  1. Java基础语法
  2. 面向对象编程思想

第二阶段:JavaSE进阶

  1. Java常用API
  2. 多线程并发编程
  3. 数据结构/集合框架
  4. IO/网络编程/反射/设计模式

第三阶段:主流数据库管理系统

  1. MySQL/Oracle
  2. JDBC

第四阶段:JavaWeb开发技术详解

  1. JavaWeb前端
  2. JavaWeb基础
  3. JavaWeb高级

第五阶段:项目实战

  1. 团队协作完成
  2. 个人实战完成