62,625
社区成员
发帖
与我相关
我的任务
分享
package test;
import java.io.*;
interface Calculator {
public double calculate(double a, double b);
}
class Add implements Calculator{
public double calculate(double a, double b){
return a + b;
}
}
class Sub implements Calculator{
public double calculate(double a, double b){
return a - b;
}
}
class Mul implements Calculator {
public double calculate(double a, double b){
return a * b;
}
}
class Div implements Calculator {
public double calculate(double a, double b){
return a / b;
}
}
class CalculatorFactory {
private static final Calculator add = new Add();
private static final Calculator sub = new Sub();
private static final Calculator mul = new Mul();
private static final Calculator div = new Div();
public static Calculator fromChar(char c){
if(c == '+')
return add;
if(c == '-')
return sub;
if(c == '*')
return mul;
if(c == '/')
return div;
return null;
}
}
public class Test {
public static void main(String[] args) {
Reader reader = null;
BufferedReader breader = null;
System.out.print("输入运行符:");
try{
reader = new InputStreamReader(System.in);
breader = new BufferedReader(reader);
while(true){
System.out.print("输入运算符:");
String strC = breader.readLine().trim();
if(strC.length() > 1){
System.out.println("无效的运算符");
break;
}
Calculator calculator = CalculatorFactory.fromChar(strC.charAt(0));
if(calculator == null) {
System.out.println("无效的运算符");
break;
}
System.out.print("输入第一个数:");
String strA = breader.readLine().trim();
Double a = null;
try{
a = Double.parseDouble(strA);
}catch(Exception ex){
}
if(a == null) {
System.out.println("无效的数");
break;
}
System.out.print("输入第一个数:");
String strB = breader.readLine().trim();
Double b = null;
try{
b = Double.parseDouble(strB);
}catch(Exception ex){
}
if(b == null) {
System.out.println("无效的数");
break;
}
System.out.println("计算结果是:" + calculator.calculate(a, b));
}
}catch(Exception ex){
ex.printStackTrace();
}finally{
if(breader != null){
try{
breader.close();
}catch(Exception ex){
}
}
if(reader != null){
try{
reader.close();
}catch(Exception ex){
}
}
}
}
}