//利用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 优化版 用接口实现(输入两个数选择实现加减乘除运算)的更多相关文章

  1. 使用工厂方法模式设计能够实现包含加法(+)、减法(-)、乘法(*)、除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果。要求使用相关的工具绘制UML类图并严格按照类图的设计编写程序实

    2.使用工厂方法模式设计能够实现包含加法(+).减法(-).乘法(*).除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果.要求使用相关的工具绘制UML类图并严格按照类图的设计编写程 ...

  2. 1、使用简单工厂模式设计能够实现包含加法(+)、减法(-)、乘法(*)、除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果。要求使用相关的工具绘制UML类图并严格按照类图的设计编写程

    1.使用简单工厂模式设计能够实现包含加法(+).减法(-).乘法(*).除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果.要求使用相关的工具绘制UML类图并严格按照类图的设计编写程 ...

  3. c 输入两个数,第一个数决定一个nXn的矩阵,第二个数决定从1开始赋值,赋值的上限 (MD花了半天时间,思路不对害死人)

    输入两个数,第一个数决定一个nXn的矩阵,第二个数决定从1开始赋值,赋值的上限 比如: 输入: 输出: 输入: 输出: #include<stdio.h> int main(void) { ...

  4. 编写Java程序,实现从控制台输入对应个数的整数,输出对输入整数的从大到小显示

    编写Java程序,实现从控制台输入对应个数的整数,输出对输入整数的从大到小显示 效果如下: 实现代码: import java.util.Arrays; import java.util.Scanne ...

  5. java课后作业 弹出窗口求两个数的加减乘除

    //计算2个数的加减乘除 谷伟华 2015/10/6package jisuan; import javax.swing.JOptionPane; public class Jiasuan { pub ...

  6. 阶段1 语言基础+高级_1-3-Java语言高级_1-常用API_1_第1节 Scanner类_4-练习一_键盘输入两个数

    导包语句其实不用我们自己去写, 选中后回车会自动的导入包 java.util 如果没有导入进来也可以,光标在关键字那里,ALT+回车 也会自动导入包 运行看一下结果:程序其实还有可以优化的地方 先输入 ...

  7. 按要求分解字符串,输入两个数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 ...

  8. python小案例-计算输入两个数的最大公约数与最小公倍数

    # 计算最大公约数 def gcd(x,y): """ 计算最大公约数 :param x:一个正整数 :param y:一个正整数 :return:x,y的最大公约数 & ...

  9. python初学者-从键盘输入两个数判断大小

    a = int(input("a:")) b = int(input("b:")) if a > b : print(a) else : print(b)

随机推荐

  1. QueryDSL

    QueryDSL只是通用的查询框架,不支持写操作 查询出来的结果是List,我们不得不做额外的工作将它转化为领域实体

  2. D3——基本知识点

    选择器: d3.select - 从当前文档中选择一个元素 d3.selectAll - 从当前文档中选择多个元素 selection.append - 创建并追加一个新元素 selection.at ...

  3. Python取出SQL表单中的字段名

    def ReturnInfo(self, avalue, akey): cursor = connection.cursor() Sql = "select * from %s where ...

  4. rfcn校招总结

    idea:ROI pooling前都是卷积,是具备平移不变性的,但一旦插入ROI pooling之后,后面的网络结构就不再具备平移不变性了,就解决了分类和定位的矛盾,但因为引入roi-wise lay ...

  5. canvas制作随机验证码

    看到人家彩色背景的验证码想测试一下: 创建html代码: <canvas id="myCanvas" width="200" height="1 ...

  6. 利用arduino给PCB800099液晶驱动板烧录程序

    某宝上购买了一块PCB800099液晶驱动板, 卖家出货的时候刷的驱动不对,遂需要重新烧录程序 可是苦于没有编程器,寻遍网络后找到几种解决方案: arduino刷,树莓派I2C口刷,linux下用vg ...

  7. java和spring 线程池总结

    1. spring 的线程池 ThreadPoolTaskExecutor @Configuration public class ThreadPoolConfig { @Bean("thr ...

  8. 使用jQuery实现option的上移和下移

    基本思路:     上移:(1)获取当前选中的元素的索引值             (2)判断当前元素是否为第一个元素             (3)如果是,则不执行上移操作,如果不是,则则调用ins ...

  9. HDU 2897 邂逅明下 ( bash 博弈变形

    HDU 2897 邂逅明下 ( bash 博弈变形 题目大意 有三个数字n,p,q,表示一堆硬币一共有n枚,从这个硬币堆里取硬币,一次最少取p枚,最多q枚,如果剩下少于p枚就要一次取完.两人轮流取,直 ...

  10. enmu枚举类型

    在实际问题中,有些变量的取值被限定在一个有限的范围内.例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等.如果把这些量说明为整型,字符型或其它类型显然是不妥当的.为此,C语言提供了一 ...