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)
随机推荐
- angular2 遗留问题
1.angular build [2017-07-26] a.改写js/css的引用目录的前缀(比如统一增加 /abc/xxx/*.js) b.build时,可以控制index/js/css的生成 ...
- 《C++ Primer Plus》读书笔记之——处理数据
本文旨在记录在阅读<C++ Primer Plus>第五版的过程中,一些重点的知识点,方便以后查阅.本文将不断更新...... 一.第三章 处理数据 1.无符号整型不能存储负数值,其优点是 ...
- January 30 2017 Week 5 Monday
I can accept defeat but could not accept to give up. 我可以接受失败,但不能接受放弃. Fortune has not always smiled ...
- 实验5&期中考试后两题
实验内容1: #include <iostream> #include <vector> #include <string> using namespace std ...
- 管理kafka
一.主题操作使用kafka-topics.sh工具可以执行主题的大部分操作(配置变更部分已被启用并被移动到kafka-configs.sh工具中).我们可以用它创建.修改.删除和查看集群里的主题,要使 ...
- HDU 5677 ztr loves substring(Manacher+dp+二进制分解)
题目链接:HDU 5677 ztr loves substring 题意:有n个字符串,任选k个回文子串,问其长度之和能否等于L. 题解:用manacher算法求出所有回文子串的长度,并记录各长度回文 ...
- 代码注释模板(把内容保存为xml文件,导入eclipse中即可)
<?xml version="1.0" encoding="UTF-8" standalone="no"?><templa ...
- 字符串拼接+和concat的区别
+和concat都可以用来拼接字符串,但在使用上有什么区别呢,先来看看这个例子. public static void main(String[] args) { // example1 String ...
- Intellij IDEA 开启自动保存功能
IntelljJ IDEA关于文件自动保存功能主要有两种方式: 切换到其他应用时保存变化(默认使能) 设置路径:Settings >> Apperance & Behavior & ...
- (二)给Centos配置网络以及使用xshell远程连接Centos
好吧,我对网络协议以及ip配置知识的匮乏,让我在这里折腾了将近一天才搞定.可以说基本上网上遇到的问题我都遇到了.在这里,记下正确的步骤来给Centos配置网络.希望以后少走弯路. 首先我要说明的是,我 ...