书中人物两位:小菜和大鸟
故事从一份题目开始:请用C++、Java、C#任意一种面向对象语言实现一个计算器控制台程序,要求输入两个数和运算符号,得到结果。
小菜第一次答题,代码如下:
import java.util.Scanner;
public class SimpleFactoryModel {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("请输入数字A: ");
double A = in.nextDouble();
System.out.println("请选择运算符号(+ - * /): ");
String c = in.next();
System.out.println("请输入数字B: ");
double B = in.nextDouble();
double res = 0;
if(c.equals("+")){
res = A + B;
}
if(c.equals("-")){
res = A - B;
}
if(c.equals("*")){
res = A * B;
}
if(c.equals("/")){
res = A / B;
}
System.out.println("结果是: " + res);
}
}
老鸟一眼就看出了三处问题,在不考虑出题人本意的情况下,哈哈哈
第一处:命名不规范问题:A、B、c 命名最好不要在代码中出现
第二处:判断分支问题:四个if意味着每个条件都要做判断,计算机相当于做了三次无用功
第三处:未考虑除数为0的情况
小菜去修改代码了…
import java.util.Scanner;
public class SimpleFactoryModel {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
try {
System.out.println("请输入数字A: ");
double numberA = in.nextDouble();
System.out.println("请选择运算符号(+ - * /): ");
String strOperate = in.next();
System.out.println("请输入数字B: ");
double numberB = in.nextDouble();