首先给一段简单的计算器的代码,基本上所有的菜鸟都做过的
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
}
}
}