「java自动计算」Java实现简单计算器

博主:adminadmin 2022-12-31 11:45:12 712

今天给各位分享java自动计算的知识,其中也会对Java实现简单计算器进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

Java根据公式自动计算关联单元格的值

将下面的代码保存为index2.jsp即可

%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%

%

String path = request.getContextPath();

String basePath = request.getScheme() + "://"

+ request.getServerName() + ":" + request.getServerPort()

+ path + "/";

String strRow = request.getParameter("row");

String strCol = request.getParameter("col");

String formula = request.getParameter("formula");

strRow = strRow == null ? "7" : strRow;

strCol = strCol == null ? "5" : strCol;

int row = Integer.parseInt(strRow, 10);

int col = Integer.parseInt(strCol, 10);

formula = formula == null ? "" : formula;

char[] chr = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',

'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V',

'W', 'X', 'Y', 'Z' };

class Item {

private int type;

private String item;

public static final int OPERATOR = 0;

public static final int ARG = 1;

public static final int CONST = 2;

public Item(){}

public Item(String item, int type){

this.item = item;

this.type = type;

}

public Item(char item, int type){

this.item = ""+item;

this.type = type;

}

public int getType() {

return type;

}

public void setType(int t) {

type = t;

}

public String getItem() {

return item;

}

public void setItem(String s) {

item = s;

}

public void setItem(char s) {

item = ""+s;

}

}

%

!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

html

head

base href="%=basePath%"

title二维表公式自动计算/title

meta http-equiv="pragma" content="no-cache"

meta http-equiv="cache-control" content="no-cache"

meta http-equiv="expires" content="0"

/head

body

form action="index2.jsp"

br

   行: 

input type="text" name="row" value="%=row%" /

   列: 

input type="text" name="col" value="%=col%" /

  

input type="submit" value="开始列表" /

br /

br /

公式: 

input type="text" name="formula" size="53" value="%=formula%" /

  

input type="submit" value="录入公式" /

br /

/form

form name="form1"

table border="1"

tr

th/th

%

for (int i = 1; i = col; i++) {

%

th%=chr[i - 1]%/th

%

}

%

/tr

%

for (int i = 1; i = row; i++) {

%

tr

td style='width: 30px; text-align: center;'

%=i%

/td

%

for (int j = 1; j = col; j++) {

%

td

input type="text" name="txt" colNo="%=chr[j - 1]%" rowNo="%=i%"

value="%=j%" /

/td

%

}

%

/tr

%

}

%

/table

/form

/body

script language='javascript'

window.$id = function(selector){//根据id属性获取元素,返回单个元素

return document.getElementById(selector);

};

window.$name = function(selector){//根据name属性获取元素,返回数组

return document.getElementsByName(selector);

};

window.$tag = function(selector){//根据标签名获取元素,返回数组

return document.getElementsByTagName(selector);

};

//为所有文本框加上事件:当获得焦点时,全选内容

var el = $tag('input');

for(var i=0;iel.length;i++){

if(el[i].getAttribute('type').toUpperCase()=='TEXT'){

el[i].onfocus = function(){

this.select();

};

}

}

//将所有name为txt的文本框加上id

el = $name('txt');

for(var i=0;iel.length;i++){

el[i].setAttribute('id',el[i].getAttribute('colNo')+el[i].getAttribute('rowNo'));

}

//对所有NAME为TXT的进行onChange事件绑定.让公式自动计算.

%

if(!formula.equals("")){

String[] a = formula.split(";");

for (String string : a) {

string = string.replaceAll("\\{","");

string = string.replaceAll("\\}","");

ListItem items = new ArrayListItem();

int constLength = 0;

items.add(new Item(string.charAt(0),Item.ARG));

int i;

for (i = 2; i string.length(); i++) {

char c = string.charAt(i);

if((c='A'c='Z')||c=='+'||c=='-'||c=='*'||c=='/'){

Item item = new Item();

if(constLength==0){

item.setItem(c);

item.setType((c='A'c='Z')?Item.ARG:Item.OPERATOR);

items.add(item);

}else{

item.setItem(string.substring(i-constLength,i));

item.setType(Item.CONST);

constLength = 0;

items.add(item);

items.add(new Item(c,Item.OPERATOR));

}

}else if(c='0'c='9'){

constLength += 1;

if(i==string.length()-1){

items.add(new Item(string.substring(i-constLength+1,i+1),Item.CONST));

}

}

}

%

for(var rowno=1;rowno%=row%;rowno++){

%

for(int k=1;kitems.size();k++){

if(items.get(k).getType()==Item.ARG){

%

$id('%=items.get(k).getItem()%'+rowno).onchange = function(){

var row = this.getAttribute('rowNo');

$id('%=items.get(0).getItem()%'+row).value = (function(){

return %

//System.err.println("\n");

for(int m=1;mitems.size();m++){

Item item = items.get(m);

//System.err.println(item.getItem());

if(item.getType()==Item.ARG){

out.print("parseInt($id('"+item.getItem()+"'+row).value,10)");

}else{

out.print(item.getItem());

}

}

%;

})();

if($id('%=items.get(0).getItem()%'+row).onchange!=null)$id('%=items.get(0).getItem()%'+row).onchange();

};

%

}

}

%

}

%

}

}

%

/script

/html

如何用java做一个计算器,请各位伸出援助之手,小女子感激不尽。

package lab5;

public class Calculate {

double op1 = 0;

double op2 = 0;

double rgst = 0;

double result = 0;

String curStr = "";

Operator op = Operator.ADD;

CalculatorView calView = null;

public Calculate(CalculatorView view) {

op1 = 0;

op2 = 0;

curStr = "0";

rgst = 0;

op = Operator.ADD;

calView = view;

}

public void clear() {

op1 = 0;

op2 = 0;

curStr = "0.0";

op = Operator.ADD;

calView.repaint();

}

/********************************************/

package lab5;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.util.HashMap;

public class CalculateController implements ActionListener {

boolean digInputListener = false;

double data = 0;

String digStr = "";

String curStr = "";

CalculatorView calView = null;

Calculate cal = null;

CalculateState curCalState = null;

public static HashMapString, Operator operatorMap;

{

operatorMap = new HashMapString, Operator();

for (Operator p : Operator.values()) {

String str = p.toString();

operatorMap.put(str, p);

}

}

public CalculateController() {

}

public void setCalculate(Calculate c) {

cal = c;

curCalState = new InitCalculateState(this, cal);

}

public void addCalculateView(CalculatorView view) {

calView = view;

}

public Calculate getCalculate() {

return cal;

}

private void startDigInputListener() {

digInputListener = true;

data = 0;

digStr = "";

}

private void endDigInputListener() {

try {

digInputListener = false;

data = Double.parseDouble(digStr);

} catch (NumberFormatException e) {

cal.clear();

cal.setResult(0.0);

}

}

private void digInputListener(char d) {

digStr += d;

curStr = digStr;

cal.SetCurStr(digStr);

}

public void changeState(CalculateState newState) {

curCalState = newState;

}

public void actionPerformed(ActionEvent e) {

String str = e.getActionCommand();

char firstChar = str.charAt(0);

if ((firstChar = '9' firstChar = '0') || firstChar == '.') {

if (digInputListener == false) {

startDigInputListener();

}

digInputListener(firstChar);

} else {

if (digInputListener == true) {

endDigInputListener();

curCalState.inputD(data);

}

Operator op = operatorMap.get(str);

passMessage(op);

}

}

private void passMessage(Operator op){

switch (op) {

case ADD:

case SUB:

case MUL:

case DIV:

curCalState.inputB(op);

break;

case COS:

case SIN:

case TAN:

curCalState.inputU(op);

break;

case ASSIGN:

curCalState.inputA();

break;

case CE:

curCalState.inputCE();

break;

case MR:

curCalState.inputMR();

break;

case M:

curCalState.inputM();

break;

case MC:

curCalState.inputMC();

break;

case MS:

curCalState.inputMS();

break;

}

}

public CalculatorView getCalculatorView() {

return calView;

}

public static void main(String[] args) {

CalculateController calController = new CalculateController();

CalculatorView mainView = new CalculatorView("Calculator",

calController);

Calculate cal = new Calculate(mainView);

calController.setCalculate(cal);

calController.addCalculateView(mainView);

}

}

****************************************************

package lab5;

public abstract class CalculateState {

protected CalculateController calController;

protected Calculate cal;

public CalculateState(CalculateController controller, Calculate c) {

calController = controller;

cal = c;

}

public void inputA() {

}

void inputD(double d) {

}

void inputU(Operator op) {

}

void inputB(Operator op) {

}

void inputCE(){

cal.clear();

}

/*

* 要存储显示的数据,请单击“MS”。

* 要重新调用存储的数据,请单击“MR”。

* 要清除内存,请单击“MC”。

* 把所显示的数字与内存中的数字相加,请单击“M+”

*/

void inputM(){

double curData = calController.getCalculatorView().getMainScreenData();

cal.setRgst(cal.getRgst() + curData);

}

void inputMR(){

inputD(cal.getRgst());

}

void inputMC(){

cal.setRgst(0);

}

void inputMS(){

double curData = calController.getCalculatorView().getMainScreenData();

cal.setRgst(curData);

}

}

******************************

package lab5;

import java.awt.*;

import javax.swing.*;

public class CalculatorView extends JFrame {

final static long serialVersionUID = 20000;

final int NUM = 24;

JButton[] buttons;

String[] texts = { "CE", "MC", "0", "1", "2", "+", "sin", "MR", "3", "4",

"5", "-", "cos", "MS", "6", "7", "8", "*", "tan", "M+", "9", ".",

"=", "/" };

JTextField rgstScreen;

JTextField mainScreen;

JPanel buttonPanel;

JPanel textPanel;

CalculateController calController = null;

public CalculatorView(String title, CalculateController controller) {

super(title);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setLayout(new BorderLayout());

JFrame.setDefaultLookAndFeelDecorated(true);

calController = controller;

rgstScreen = new JTextField("0.0", 10);

mainScreen = new JTextField("0.0", 20);

rgstScreen.setEditable(false);

mainScreen.setFocusable(false);

textPanel = new JPanel();

textPanel.setLayout(new FlowLayout(FlowLayout.RIGHT));

textPanel.add(rgstScreen);

textPanel.add(mainScreen);

buttonPanel = new JPanel();

buttonPanel.setLayout(new GridLayout(4, 6));

buttons = new JButton[NUM];

for (int i = 0; i NUM; i++) {

buttons[i] = new JButton(texts[i]);

buttons[i].addActionListener(calController);

buttons[i].setActionCommand(texts[i]);

buttonPanel.add(buttons[i]);

}

this.getContentPane().add(textPanel);

add(textPanel, BorderLayout.NORTH);

add(buttonPanel, BorderLayout.SOUTH);

pack();

setVisible(true);

}

public double getMainScreenData() {

return Double.parseDouble(mainScreen.getText());

}

public void repaint() {

super.repaint();

Calculate cal = calController.getCalculate();

mainScreen.setText(cal.getCurStr());

rgstScreen.setText(Double.toString(cal.getRgst()));

}

}

*************************************

package lab5;

public class InitCalculateState extends CalculateState {

public InitCalculateState(CalculateController controller, Calculate c) {

super(controller, c);

}

public void inputD(double d) {

OnlyOp1 s = new OnlyOp1(calController, cal);

calController.changeState(s);

s.inputD(d);

}

}

class OnlyOp1 extends CalculateState {

public OnlyOp1(CalculateController controller, Calculate c) {

super(controller, c);

}

public void inputA() {

}

public void inputD(double d) {

calController.getCalculate().setOp1(d);

calController.getCalculate().SetCurStr(Double.toString(d));

}

public void inputU(Operator op) {

UniqueOpState u = new UniqueOpState(calController, cal);

//cal.setOp(op);

calController.changeState(u);

u.inputU(op);

}

public void inputB(Operator op) {

WaitOp2 b = new WaitOp2(calController, cal);

calController.getCalculate().setOp(op);

calController.changeState(b);

}

}

class UniqueOpState extends CalculateState {

public UniqueOpState(CalculateController controller, Calculate c) {

super(controller, c);

}

public void inputA() {

dothing();

}

public void inputD(double d) {

OnlyOp1 w = new OnlyOp1(calController, cal);

calController.changeState(w);

w.inputD(d);

}

public void inputU(Operator op) {

cal.setOp(op);

dothing();

}

public void inputB(Operator op) {

WaitOp2 wOp2 = new WaitOp2(calController, cal);

cal.setOp(op);

calController.changeState(wOp2);

}

private void dothing() {

try {

double op1 = cal.result();

cal.setOp1(op1);

cal.SetCurStr(Double.toString(op1));

} catch (Exception e) {

cal.clear();

cal.setResult(0.0);

cal.SetCurStr("异常!");

}

}

}

class WaitOp2 extends CalculateState {

public WaitOp2(CalculateController controller, Calculate c) {

super(controller, c);

}

public void inputA() {

try {

double op2 = cal.getOp1();

cal.setOp2(op2);

double result = cal.result();

cal.setResult(result);

cal.setOp1(result);

cal.SetCurStr(Double.toString(result));

HaveOp2 b = new HaveOp2(calController, cal);

calController.changeState(b);

} catch (Exception e) {

cal.clear();

cal.setResult(0.0);

cal.SetCurStr("异常!");

}

}

public void inputD(double d) {

try {

cal.setOp2(d);

cal.SetCurStr(Double.toString(d));

cal.setResult(cal.result());

HaveOp2 b = new HaveOp2(calController, cal);

calController.changeState(b);

} catch (Exception e) {

cal.clear();

cal.setResult(0.0);

}

}

public void inputU(Operator op) {

UniqueOpState u = new UniqueOpState(calController, cal);

calController.changeState(u);

u.inputU(op);

}

public void inputB(Operator op) {

cal.setOp(op);

}

}

class HaveOp2 extends CalculateState {

public HaveOp2(CalculateController controller, Calculate c) {

super(controller, c);

}

public void inputA() {

try {

double result = cal.result();

cal.setResult(result);

cal.setOp1(result);

cal.SetCurStr(Double.toString(result));

} catch (Exception e) {

cal.clear();

cal.setResult(0.0);

}

}

public void inputD(double d) {

OnlyOp1 w = new OnlyOp1(calController, cal);

calController.changeState(w);

w.inputD(d);

}

public void inputU(Operator op) {

UniqueOpState u = new UniqueOpState(calController, cal);

calController.changeState(u);

u.inputU(op);

}

public void inputB(Operator op) {

WaitOp2 w = new WaitOp2(calController, cal);

double result = cal.getResult();

cal.setOp1(result);

cal.setOp(op);

cal.SetCurStr(Double.toString(result));

calController.changeState(w);

}

}

******************************

package lab5;

public enum Operator {

ADD, SUB, MUL, DIV, COS, SIN, TAN, CE, MR, MC, MS, M, ASSIGN;

public String toString() {

switch (this) {

case ADD:

return "+";

case SUB:

return "-";

case DIV:

return "/";

case MUL:

return "*";

case COS:

return "cos";

case SIN:

return "sin";

case TAN:

return "tan";

case CE:

return "CE";

case MR:

return "MR";

case MC:

return "MC";

case MS:

return "MS";

case M:

return "M+";

case ASSIGN:

return "=";

default:

return "Unkown Operator";

}

}

public static int OperatorType(Operator op) {

int type = 0;

switch (op) {

case ADD:

case SUB:

case MUL:

case DIV:

type = 2;

break;

case COS:

case SIN:

case TAN:

type = 1;

break;

default:

type = 3;

break;

}

return type;

}

}

public String getCurStr() {

return curStr;

}

public void SetCurStr(String str) {

curStr = str;

calView.repaint();

}

public void setOp1(double d) {

op1 = d;

calView.repaint();

}

public void setOp2(double d) {

op2 = d;

calView.repaint();

}

public void setOp(Operator p) {

op = p;

calView.repaint();

}

public void setResult(double result) {

this.result = result;

}

public double getOp1() {

return op1;

}

public double getOp2() {

return op2;

}

public Operator getOp() {

return op;

}

public double getResult(){

return result;

}

public double result() throws Exception{

double ret = 0;

switch (op) {

case ADD:

ret = op1 + op2;

break;

case SUB:

ret = op1 - op2;

break;

case MUL:

ret = op1 * op2;

break;

case DIV:

ret = op1 / op2;

break;

case SIN:

ret = Math.sin(op1);

break;

case COS:

ret = Math.cos(op1);

break;

case TAN:

ret = Math.tan(op1);

break;

}

return ret;

}

public double getRgst() {

return rgst;

}

public void setRgst(double m) {

this.rgst = m;

calView.repaint();

}

}

JAVA编写一个简单的计算器,要求用户在界面上输入两个数,能够自动计算出它们的和

输入数字后,敲回车开始自动计算

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JTextField;

public class SimpleCalculator {

private JFrame f = new JFrame("Simple Calculator");

private JLabel num1 = new JLabel("Number1");

private JLabel num2 = new JLabel("Number2");

private JTextField input1 = new JTextField();

private JTextField input2 = new JTextField();

private JLabel sum = new JLabel("Sum");

private JTextField sumText = new JTextField();

public SimpleCalculator() {

sumText.setEditable(false);

input1.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

if (input2.getText() == null || input2.getText().trim().equals("")) {

return;

}

if (input1.getText() != null input2.getText() != null) {

double number1 = 0d, number2 = 0d;

try {

number1 = Double.parseDouble(input1.getText());

number2 = Double.parseDouble(input2.getText());

} catch (NumberFormatException nbFmtExp) {

JOptionPane.showMessageDialog(null, "Invalid input format, it must be numbers");

return;

}

sumText.setText(String.valueOf(number1 + number2));

}

}

});

input2.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

if (input1.getText() == null

|| input1.getText().trim().equals("")) {

return;

}

if (input1.getText() != null input2.getText() != null) {

double number1 = 0d, number2 = 0d;

try {

number1 = Double.parseDouble(input1.getText());

number2 = Double.parseDouble(input2.getText());

} catch (NumberFormatException nbFmtExp) {

JOptionPane.showMessageDialog(null,"Invalid input format, it must be numbers");

return;

}

sumText.setText(String.valueOf(number1 + number2));

}

}

});

f.setLayout(new GridLayout(3, 2));

f.add(num1);

f.add(input1);

f.add(num2);

f.add(input2);

f.add(sum);

f.add(sumText);

f.setVisible(true);

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

f.pack();

}

public static void main(String[] args) {

new SimpleCalculator();

}

}

java 实现计算器,用户从键盘输入2个操作数和一个运算符,系统自动完成运算。

import java.util.*;

public class Test1 {

public static void main(String[] args) {

Scanner input = new Scanner(System.in);

System.out.print("请输入第一个操作数:");

double num1 = input.nextInt();

System.out.print("请输入第二个操作数:");

double num2 = input.nextInt();

System.out.print("运算符:");

String fuHao = input.next();

char c = fuHao.charAt(0);

double num3 = 0;

switch (c) {

case '+':

num3 = num1 + num2;

break;

case '-':

num3 = num1 - num2;

break;

case '*':

num3 = num1 * num2;

break;

case '/':

num3 = num1 / num2;

break;

default :

System.out.println("输入符号错误");

}

System.out.println(num1 + fuHao + num2 + "=" + num3);

}

}

如何在PDF内使用JAVA实现自动计算?

PDF它就不是一个文档处理工具

只是用来查看文档的,里面都是图片的形式

市面上的pdf工具,基本也就是能够复制文字

用Java编写一个完整的递归程序,实现如下功能:从键盘输入数字n,程序自动计算n!,并输出

    public static void main(String[] args){

        System.out.println("输入n,按回车:");

        Scanner s = new Scanner(System.in);

        Integer n = Integer.parseInt(s.next());

        Integer re = factorial(1, n);

        System.out.println(re);

    }

    public static Integer factorial(Integer a, Integer b){

        if(b == 1){

            return a * b;

        }else{

            return a * b * factorial(a, b-1);

        }

    }

这个最后吐槽一句,用循环一下就解决了,非要用递归,闲得蛋疼

关于java自动计算和Java实现简单计算器的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。