一、流程图
二、主要代码展示及说明:
(1)数据的输入
Scanner s = new Scanner(System.in);
System.out.print("请输入你要运算的第一数:");
double frist = s.nextDouble();
System.out.print("请输入运算符号(+,-,*,/)");
String str = s.next();
System.out.print("请输入你要运算的第二个数:");
double two = s.nextDouble();
功能解释:程序开始时,先定义一个变量,然后会有一个提示语句提示呢输入你所要计算的第一个数,不过,这里我们设定的是双精度数字,所以最后的运算结果统一都是双精度类型的数字;之后就是输入运算符了,不过,由于时间原因,我们只写了加、减、乘、除的运算,所以这里会有一句提示语句,提示你输入加、减、乘、除的运算符,如果你输入错误,那么会提示你重新输入;最后一条是你要输入的第二个数字,同样会提示,而且,如果你在输入数字的时候输入了其它的符号,这里同样会提示你重新输入。
(2)运算符的控制
if ("+".equals(str)) {
System.out.println(Calculator.add(frist, two));
}else if ("-".equals(str)) {
System.out.println(Calculator.reduce(frist, two));
}else if ("*".equals(str)) {
System.out.println(Calculator.multiplication(frist, two));
}else if ("/".equals(str)) {
if(two == 0){
System.out.println("除数不能为0.");
}else {
System.out.println(Calculator.div(frist, two));
}
}else {
System.out.println("您输入有误请重新输入!");
}
功能解释:当输入一个与算符的时候,程序会根据if语句所判断的结果选择调用哪个函数,然后传参给你所选择的函数,所传的参数就是你先前输入的两个数。如果,你选择的是加法,那么程序会调用加法的函数,并且在函数内部进行运算,返回运算结果,随之,减法和乘法也是这样的。如果你选择的是除法,那么程序同样返回一个结果,不过在这之前,会进行一个判断,要是你的除数为0,那么这个表达式没有意义,计算器会提示你是否重新输入,如果选是的话,那么下一次的除数应该记住不要再为0了哦!
(3)选择继续运算还是退出
while(flag2){
System.out.println("是否继续N/Y:");
String isNext = s.next();
if("n".equals(isNext)||"N".equals(isNext)){
flag1 = false;
flag2 = false;
}else if ("Y".equals(isNext)||"y".equals(isNext)) {
flag1 = true;
flag2 = false;
}else {
System.out.println("输入有误!请重新输入");
flag2 = true;
}
}
功能解释:这是计算器在进行运算完成的时候都要有的选择,如果你选择的是n或者是N,那么程序结束运行,如果,你选择的是y或者是Y,那么程序继续运行,计算器会提示你输入第一个数据,即是新印的运算,而以前的运算记录还在上面,并没有被清除,方便你随时查看。不过,如果你要是选择的不是n、N、y、Y这几个字符的话,那么计算器会提示你输入有误,请重新输入,然后,你就可以重新进行选择,是否退出。
三、运行调试与分析讨论
1.加法的运算:
//计算加法的函数
public static double add(double i ,double j) {
return i+j;
}
分析:输出结果如图所示,计算的结果为110.0,为双精度型,而且,还可以在保证这次运算记录的情况下,进行下一次运算。
2.减法的运算:
//计算减法的函数
public static double reduce(double i , double j){
return i-j;
}
分析:输出的结果如图所示,减法和加法类似,结果都为双精度类型,而且,我们为了让计算的效果更佳充分的发挥,选择的例子是小数减去大数,结果为负数,很好的体现出来。
3.乘法的运算:
//计算乘法的函数
public static double multiplication(double i ,double j) {
return i*j;
}
分析:输出的结果如图所示,结果为736.0,我们将乘法的功能实现了,并且可以选择进行下一步运算。
4.除法的运算:
//计算乘法的函数
public static double multiplication(double i ,double j) {
return i*j;
}
分析:输出的结果如图所示,除法能够很好的实现,但有一个问题,比如在计算过程如果除数为0,那么结果为无穷大的数,换句话说,就是除数不能为0,如果为0,那么重新输入。
四、代码详情:
package com.bin.utils;
import java.math.BigDecimal;
import java.util.Scanner;
public class Calculator {
//计算加法的函数
public static double add(double i ,double j) {
return i+j;
}
//计算减法的函数
public static double reduce(double i , double j){
return i-j;
}
//计算乘法的函数
public static double multiplication(double i ,double j) {
return i*j;
}
//计算除法的函数
public static double div(double i ,double j) {
return i/j;
}
public static void main(String[] args) {
boolean flag1 = true;
while (flag1) {
Scanner s = new Scanner(System.in);
System.out.print("请输入你要运算的第一数:");
double frist = s.nextDouble();
System.out.print("请输入运算符号(+,-,*,/)");
String str = s.next();
System.out.print("请输入你要运算的第二个数:");
double two = s.nextDouble();
if ("+".equals(str)) {
System.out.println(Calculator.add(frist, two));
}else if ("-".equals(str)) {
System.out.println(Calculator.reduce(frist, two));
}else if ("*".equals(str)) {
System.out.println(Calculator.multiplication(frist, two));
}else if ("/".equals(str)) {
if(two == 0){
System.out.println("除数不能为0.");
}else {
System.out.println(Calculator.div(frist, two));
}
}else {
System.out.println("您输入有误请重新输入!");
}
boolean flag2 = true;
while(flag2){
System.out.println("是否继续N/Y:");
String isNext = s.next();
if("n".equals(isNext)||"N".equals(isNext)){
flag1 = false;
flag2 = false;
}else if ("Y".equals(isNext)||"y".equals(isNext)) {
flag1 = true;
flag2 = false;
}else {
System.out.println("输入有误!请重新输入");
flag2 = true;
}
}
}
}
}