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)
随机推荐
- QT的动图加载
http://blog.csdn.net/u011619422/article/details/47342403
- multiGet(下载软件)
下载软件 apt-get install multiGet
- Java 中 Vector 和 ArrayList 的区别
首先看这两类都实现List接口,而List接口一共有三个实现类,分别是ArrayList.Vector和LinkedList.List用于存放多个元素,能够维护元素的次序,并且允许元素的重复.3个具体 ...
- Intellij IDEA Organize Imports
使用Eclipse进行开发时,我喜欢用Ctrl + Shift + O快捷键管理Java类的导入,它可以导入所需的Java类,去除不需要的Java类. Eclipse的Organize Imports ...
- 关于Could not obtain transaction-synchronized Session for current thread 这个异常。
Could not obtain transaction-synchronized Session for current thread 这个异常之前非常让我头大.对于网上的各种说法都试了一下反正都不 ...
- Mongod启动失败修复方法
可能的原因:上次服务未正常关闭 1.删除data/db目录下的mongo.lock文件 2.删除/tmp/mongodb-27017.sock文件
- shiro简单入门介绍
shiro是apache的一个java安全框架 可以完成认证,授权,加密,会话管理,基于web继承,缓存等 功能简介: 从外部来看: shiro架构 Subject:主体,代表了当前“用户”,这个用 ...
- Mybatis 和Spring整合之原始dao开发
F:\Aziliao\mybatis\代码\31.mybatis与spring整合-开发原始dao 1.1. SqlMapConfig.xml <?xml version="1.0&q ...
- 说说application/x-www-form-urlencoded和application/json的区别
今天一位同事在于微信小程序开发人员那边在对接测试的时候,遇到了一个错误,安卓那边是以application/json作为请求体类型,而Java这边仍向往常那样没有多么大的变化,但是就是前台传输的数据为 ...
- 一. Selenium介绍
1. 什么是Selenium 是web自动化测试工具集,主要包括:IDE.Grid.RC(Selenium1.0).WebDriver(Selenium2.0) 与其他工具的不同: 一般的脚本测试工具 ...