java实现计算器
Main_business.java
import java.util.Scanner;
public class Main_business {
public void getMyCalculate() throws Exception {
Check_input myService = new Check_input();
System.out.println("请输入数字1");
//传入正则表达式
myService. incoming_rules("^([+][0-9][0-9]*|[0-9][0-9]*)+(.[0-9]{1,4})?");
String sDigital = myService.Num_Service();
float fDigital = Float.parseFloat(sDigital);
System.out.println("请输入符号");
String bSymbol = myService.operator_Service();
Digital_information execution_method = new OperationFactory().createOperation(bSymbol);
System.out.println("请输入数字2");
myService. incoming_rules("^([1-9][0-9]*)+(.[0-9]{1,4})?");
String sDigital2 = myService.Num_Service();
float fDigital2 = Float.parseFloat(sDigital2);
execution_method.setpDigital1(fDigital);
execution_method.setpDigital2(fDigital2);
float result = execution_method.getResult();
System.out.println("执行结果"+result);
System.out.println("继续操作请按0,退出请按任意键");
Scanner sc = new Scanner(System.in);
String option = sc.nextLine();
if(option.equals("0")) {
new Main_business().getMyCalculate();
}else {
System.exit(0);
}
}
}
Digital_information.java
public class Digital_information implements ResultHandler{
protected float pDigital1 ;
protected float pDigital2;
protected String pOperation;
public float getpDigital1() {
return pDigital1;
}
public void setpDigital1(float pDigital1) {
this.pDigital1 = pDigital1;
}
public float getpDigital2() {
return pDigital2;
}
public void setpDigital2(float pDigital2) {
this.pDigital2 = pDigital2;
}
public String getpOperation() {
return pOperation;
}
public void setpOperation(String pOperation) {
this.pOperation = pOperation;
}
@Override
public float getResult() {
// TODO Auto-generated method stub
return 0;
}
}
OPerationFactory.java
public class OperationFactory {
public Digital_information createOperation(String operator) {
// TODO Auto-generated method stub
Digital_information ope = null;
switch (operator) {
case "+":
ope = new AddResult();
break;
case "-":
ope = new Subtraction();
break;
case "*":
ope = new MultiplyResult();
break;
case "/":
ope = new DevideResult();
break;
default:
break;
}
return ope;
}
}
ResultHandler.java
public interface ResultHandler {
public float getResult();
}
AddResult.java
public class AddResult extends Digital_information{
float pDigital;
//重写父类里面的方法
public float getResult() {
// TODO Auto-generated method stub
pDigital1 = super.getpDigital1();
pDigital2 = super.getpDigital2();
pDigital = pDigital1+pDigital2;
return pDigital;
}
}
DevideResult.java
public class DevideResult extends Digital_information{
float pDigital;
public float getResult() {
// TODO Auto-generated method stub
pDigital1 = super.getpDigital1();
pDigital2 = super.getpDigital2();
pDigital = pDigital1/pDigital2;
return pDigital;
}
}
MultiplyResult.java
public class MultiplyResult extends Digital_information{
float pDigital;
public float getResult() {
// TODO Auto-generated method stub
pDigital1 = super.getpDigital1();
pDigital2 = super.getpDigital2();
pDigital = pDigital1*pDigital2;
return pDigital;
}
}
Subtraction.java
public class Subtraction extends Digital_information{
float pDigital;
public float getResult() {
// TODO Auto-generated method stub
pDigital1 = super.getpDigital1();
pDigital2 = super.getpDigital2();
pDigital = pDigital1/pDigital2;
return pDigital;
}
}
check_input.java
import java.util.Scanner;
import java.util.regex.Pattern;
import com.service.Exception.Check_exception;
public class Check_input {
String rules;
Scanner sc = new Scanner(System.in);
public String Num_Service() throws Exception {
String sDigital;
do {
try {
sDigital = sc.nextLine();
Pattern pattern = Pattern.compile(rules);//返回一个Pattern的对象。
boolean check_num2 = pattern.matcher(sDigital).matches();
if (check_num2==true) {
return sDigital;
}
else {
System.out.println("输入不正确,请重新输入");
//sDigital = sc.nextLine();
}
} catch (Exception e) {
System.out.println("请输入正确格式");
}
} while (true);
}
public String operator_Service() throws Check_exception {
String operator;
do {
try {
operator = sc.nextLine();
if (operator.equals("+")||operator.equals("-")||operator.equals("*")||operator.equals("/")) {
return operator;
}
else {
System.out.println("输入不正确,请重新输入");
//sDigital = sc.nextLine();
}
} catch (Exception e) {
System.out.println("请输入正确格式");
}
} while (true);
}
//接收前面出入的规则
public void incoming_rules(String rules) {
// TODO Auto-generated method stub
this.rules=rules;
}
}
java实现计算器的更多相关文章
- java简单计算器
写的一个小计算器,留着以后看吧. import java.awt.BorderLayout; import java.awt.Button; import java.awt.Color; import ...
- java 学习 ——计算器小程序
简易计算器小程序代码: package jisuanqi; //声明须要插入的包 import java.awt.*; import java.lang.Object; import java.lan ...
- 【java图形计算器】 java awt swing组件应用
package package1; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swi ...
- Java实例---计算器实例
1.计算器上的键的显示名字 1.0 继承JFrame类 public class Calculate extends JFrame { } 1.1定义常量 /** 计算器上的键的显示名字 */ pub ...
- java代码----------计算器代码
总结: 很多不完善—— package com.rue; import java.awt.BorderLayout; import java.awt.FlowLayout; import java.a ...
- java代码---------计算器实现
总结:虽然,没有人会帮你到底,凭什么要对你怜香惜玉 注意实现哪一个运算就把相关代码放在else if这个判断语句里面 package com.rue; import java.awt.BorderLa ...
- java代码------计算器
总结:我用if()语句写计算功能的代码时,实现不了,与switch_-catch语句不一样.不知到怎么实现 package com.p; import javax.swing.*; import ja ...
- 一个简单的java年龄计算器
制作一个如下图年龄计算器 根据题目,我做了一个由Calendar类以及年月日各相减得到的年龄,当然正确的方法不止一个,以下为我的源代码和结果截图: package com.Date; import j ...
- Java可视化计算器
利用java中的AWT和SWING包来做可视化界面. 首先来简单了解一下这两个包: AWT和Swing都是Java中用来做可视化界面的.AWT(Abstract Window Toolkit):抽象窗 ...
随机推荐
- 经常在比特币中看到的merkle树是什么?
区块基础-merkle树 Merkle tree中文叫做梅克尔树,这当然不是一棵真正的植物树,merkle tree是计算机数据结构中的一种树,是由计算机科学家 Ralph Merkle 提出的, ...
- PHP服务器Apache与Nginx的对比分析
PHP服务器Apache与Nginx的对比分析 本篇文章给大家带来的内容是关于PHP服务器Apache与Nginx的对比分析,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. Apach ...
- CentOS 7 上安装vim(默认未安装)
今天使用CentOS 7,发现未安装vim,所以重新安装 执行命令: yum -y install vim* 然后就可以使用了
- 在Ubuntu上安装Jenkins
先决条件 安装Java SDK sudo apt-get install openjdk-8-jdk # sudo apt-get install openjdk-7-jdk 早些系统可以安装 第1步 ...
- WPF之DataGrid应用 翻页
前几天打算尝试下DataGrid的用法,起初以为应该很简单,可后来被各种使用方法和功能实现所折磨.网络上的解决方法太多,但也太杂.没法子,我只好硬着头皮阅览各种文献资料,然后不断的去尝试,总算小有成果 ...
- Python学习笔记(3)-字符串
创建字符串 一对单引号或双引号 >>> 'hello world' 'hello world' >>> "hello world" 'hello ...
- 剑指offer——矩形覆盖
我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 分析:斐波那契数列的变形 n=0,返回0 n=1,返回1 n=2,返回 ...
- Scala学习(八)练习
Scala中继承&练习 1. 扩展如下的BankAccount类,新类CheckingAccount对每次存款和取款都收取1美元的手续费 class BankAccount ( initial ...
- 朱晔和你聊Spring系列S1E8:凑活着用的Spring Cloud(含一个实际业务贯穿所有组件的完整例子)
本文会以一个简单而完整的业务来阐述Spring Cloud Finchley.RELEASE版本常用组件的使用.如下图所示,本文会覆盖的组件有: Spring Cloud Netflix Zuul网关 ...
- Javascript 综合示例 网页扫雷游戏
---------------认定了的事情,只要是对的,干到底! ------------------------------------------------------------------- ...