java 优化版 用接口实现(输入两个数选择实现加减乘除运算)
//利用java接口实现计算器,实现加减乘除的功能
import java.util.Scanner;
class Test {
public static void main(String[] args) {
fun i = new fun();
jiafa s1 = new jiafa();
jianfa s2 = new jianfa();
chengfa s3 = new chengfa();
chufa s4 = new chufa();
System.out.println("请输入你要计算的两个数字:");
Scanner scanner = new Scanner(System.in);
Scanner scanner2 = new Scanner(System.in);
int str = scanner.nextInt();
int str2 = scanner2.nextInt();
int a = str;
int b = str2;
System.out.println("请输入您想要计算的方式(+,-,*,/):");
Scanner scanner3 = new Scanner(System.in);
String zifu1 = scanner3.next();
//next()不能读取空格,nextline()可以读取
//在实现字符窗口的输入时,我个人更喜欢选择使用扫描器Scanner,它操作起来比较简单。
// 在写作业的过程中,我发现用Scanner实现字符串的输入有两种方法,一种是next(),
// 一种nextLine(),但是这两种方法究竟有什么区别呢?
// 首先,next()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,
// next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键、
// Tab键或Enter键等视为分隔符或结束符。简单地说,next()查找并返回来自此扫描器的下一个完整标记。
// 完整标记的前后是与分隔模式匹配的输入信息,
// 所以next方法不能得到带空格的字符串而nextLine()方法的结束符只是Enter键,
// 即nextLine()方法返回的是Enter键之前的所有字符,它是可以得到带空格的字符串的。
//nextLine()自动读取了被next()去掉的Enter作为他的结束符,所以没办法给s2从键盘输入值。
// 经过验证,其他的next的方法,如double nextDouble() ,
// float nextFloat() , int nextInt() 等与nextLine()连用时都存在这个问题,
// 解决的办法是:在每一个 next()、nextDouble() 、 www.gzlij.com()、nextFloat()、nextInt()
// 等语句之后加一个nextLine()语句,将被next()去掉的Enter结束符过滤掉
scanner3.nextLine();
while(true) {
if (zifu1.equals("+")) { System.out.print("加法结果:");
i.func(s1, a, b);
break; } else if (zifu1.equals("-")) {
System.out.print("减法结果:");
i.func(s2, a, b);
break; } else if (zifu1.equals("*")) {
System.out.print("乘法结果:");
i.func(s3, a, b);
break;
} else if (zifu1.equals("/")) {
System.out.print("除法结果:");
i.func(s4, a, b);
break; }
else {
System.out.println("非法输入!");
break;
}
} }
} interface Ijisuanqi {
int jisuan(int a, int b); } class fun {
public void func(Ijisuanqi per, int a, int b) {
System.out.println(per.jisuan(a, b));
} } class jiafa implements Ijisuanqi {
public int jisuan(int a, int b) {
return a + b;
}
} class jianfa implements Ijisuanqi {
public int jisuan(int a, int b) {
return a - b;
}
} class chengfa implements Ijisuanqi {
public int jisuan(int a, int b) {
return a * b;
}
} class chufa implements Ijisuanqi {
public int jisuan(int a, int b) {
if (b == 0) { return -1;
} else {
return a / b;
}
}
}
运行结果:

java 优化版 用接口实现(输入两个数选择实现加减乘除运算)的更多相关文章
- 使用工厂方法模式设计能够实现包含加法(+)、减法(-)、乘法(*)、除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果。要求使用相关的工具绘制UML类图并严格按照类图的设计编写程序实
2.使用工厂方法模式设计能够实现包含加法(+).减法(-).乘法(*).除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果.要求使用相关的工具绘制UML类图并严格按照类图的设计编写程 ...
- 1、使用简单工厂模式设计能够实现包含加法(+)、减法(-)、乘法(*)、除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果。要求使用相关的工具绘制UML类图并严格按照类图的设计编写程
1.使用简单工厂模式设计能够实现包含加法(+).减法(-).乘法(*).除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果.要求使用相关的工具绘制UML类图并严格按照类图的设计编写程 ...
- c 输入两个数,第一个数决定一个nXn的矩阵,第二个数决定从1开始赋值,赋值的上限 (MD花了半天时间,思路不对害死人)
输入两个数,第一个数决定一个nXn的矩阵,第二个数决定从1开始赋值,赋值的上限 比如: 输入: 输出: 输入: 输出: #include<stdio.h> int main(void) { ...
- 编写Java程序,实现从控制台输入对应个数的整数,输出对输入整数的从大到小显示
编写Java程序,实现从控制台输入对应个数的整数,输出对输入整数的从大到小显示 效果如下: 实现代码: import java.util.Arrays; import java.util.Scanne ...
- java课后作业 弹出窗口求两个数的加减乘除
//计算2个数的加减乘除 谷伟华 2015/10/6package jisuan; import javax.swing.JOptionPane; public class Jiasuan { pub ...
- 阶段1 语言基础+高级_1-3-Java语言高级_1-常用API_1_第1节 Scanner类_4-练习一_键盘输入两个数
导包语句其实不用我们自己去写, 选中后回车会自动的导入包 java.util 如果没有导入进来也可以,光标在关键字那里,ALT+回车 也会自动导入包 运行看一下结果:程序其实还有可以优化的地方 先输入 ...
- 按要求分解字符串,输入两个数M,N;M代表输入的M串字符串,N代表输出的每串字符串的位数,不够补0。例如:输入2,8, “abc” ,“123456789”,则输出为“abc00000”,“12345678“,”90000000”
import java.util.ArrayList; import java.util.Scanner; public class Text { @SuppressWarnings("re ...
- python小案例-计算输入两个数的最大公约数与最小公倍数
# 计算最大公约数 def gcd(x,y): """ 计算最大公约数 :param x:一个正整数 :param y:一个正整数 :return:x,y的最大公约数 & ...
- python初学者-从键盘输入两个数判断大小
a = int(input("a:")) b = int(input("b:")) if a > b : print(a) else : print(b)
随机推荐
- docker commit 显示“invalid reference format”
docker commit的时候一直显示invalid reference format,改了几次也不行,后来发现是因为docker镜像的名字中不能包含大写字母,改成小写后就行了
- Oracle实例初始化参数详解
BACKGROUND_DUMP_DEST 显示和设置Oracle数据库相关日志的存放地,Oracle11g后不再可配置,但其值仍可显示相关日志的存放地,对应配置参数为diagnostic_dest U ...
- selenium+python 数据驱动-txt篇
#循环读取txt文件中的数据,可以作为用户名,密码等使用from selenium import webdriver #创建两个列表user=[]pwd=[]f=open(r'C:\bbs\data\ ...
- 数据库JDBC的基本内容
JDBC 基本流程 首先向项目中导入jar包 创建如下代码 Class.forName("com.mysql.jdbc.Driver"); String url = "j ...
- 51nod 1515 明辨是非 [并查集+set]
今天cb巨巨突然拿题来问,感觉惊讶又开心,希望他早日康复!!坚持学acm!加油! 题目链接:51nod 1515 明辨是非 [并查集] 1515 明辨是非 题目来源: 原创 基准时间限制:1 秒 空间 ...
- BIND简易教程(3):DNSSec配置
目录:BIND简易教程(1):安装及基本配置BIND简易教程(2):BIND视图配置BIND简易教程(3):DNSSec配置 (本篇) DNSSec,有个半英半中的名字叫DNS安全扩展.说的好听一点, ...
- 使用Composer管理PHP依赖关系
Composer 是PHP中用来管理依赖(dependency)关系的工具.你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer会帮你安装这些依赖的库文件. 系统需求: ...
- UVa 1636 - Headshot(概率)
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- BZOJ1996:[HNOI2010]CHORUS 合唱队(区间DP)
Description Input Output Sample Input 4 1701 1702 1703 1704 Sample Output 8 HINT Solution 辣鸡guide真难用 ...
- 大数据-图表插件-echarts 样式修改(迭代)
修改折线图大小 myChart.setOption({ title:{ text:"价格指数" ...