「java自动计算」Java实现简单计算器
今天给各位分享java自动计算的知识,其中也会对Java实现简单计算器进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、Java根据公式自动计算关联单元格的值
- 2、如何用java做一个计算器,请各位伸出援助之手,小女子感激不尽。
- 3、JAVA编写一个简单的计算器,要求用户在界面上输入两个数,能够自动计算出它们的和
- 4、java 实现计算器,用户从键盘输入2个操作数和一个运算符,系统自动完成运算。
- 5、如何在PDF内使用JAVA实现自动计算?
- 6、用Java编写一个完整的递归程序,实现如下功能:从键盘输入数字n,程序自动计算n!,并输出
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实现简单计算器的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。