首先给一段简单的计算器的代码,基本上所有的菜鸟都做过的
package com.kiritor; import java.io.BufferedReader; import java.io.Console; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.Scanner; /** * 一个简单的+,-,*,/运算器 * 通过控制台进行读入和计算 * 基于正整数的 * */ public class Calculator { public static void main(String[] args) throws NumberFormatException, IOException { System.out.print("请输入第一个数字:"); BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); double a = Double.parseDouble(reader.readLine()); System.out.print("\n请输入第二个数字:"); double b = Double.parseDouble(reader.readLine()); System.out.print("\n请输入运算符:"); String opr = reader.readLine(); double result=0 ; if(opr.equals("+")) { result = a+b; } if(opr.equals("-")) { result =a-b; } if(opr.equals("*")) { result = a*b; } if(opr.equals("/")) { result = a/b; } System.out.println("结果为:"+result); } }
上述代码若按照正确的输入是可以得出正确的结果的,
不过真的没有问题了吗?
代码毛病:
1、变量命名规范
2、分支判断的地方极不合理,计算机进行了3次无用功的判断!
3、除法运算被除数为零的情况并未考虑!
4、用户输入的不确定性,非法输入的处理没有,造成程序的稳定性差!
代码进一步规范:
package com.kiritor; import java.io.BufferedReader; import java.io.Console; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.Scanner; /** * 一个简单的+,-,*,/运算器 通过控制台进行读入和计算 基于正整数的 * */ public class Calculator { public static void main(String[] args) { try { System.out.print("请输入第一个数字:"); BufferedReader reader = new BufferedReader(new InputStreamReader( System.in)); double num1 = Double.parseDouble(reader.readLine()); System.out.print("\n请输入第二个数字:"); double num2 = Double.parseDouble(reader.readLine()); System.out.print("\n请输入运算符:"); String opr = reader.readLine(); double result = 0; switch (opr) { case "+": result = num1 + num2; System.out.println("结果为:" + result); break; case "-": result = num1 - num2; System.out.println("结果为:" + result); break; case "*": result = num1 * num2; System.out.println("结果为:" + result); break; case "/": if (num2 == 0) { System.out.println("除数不能为零!"); } else { result = num1 / num2; System.out.println("结果为:" + result); } break; default: break; } } catch (Exception e) { // TODO: handle exception } } }
转载于:https://blog.51cto.com/kiritor/1226833