Changel_Cai 2014-06-20 23:46
浏览 236
已采纳

这个小demo,不知道有没面向对象的思想在里面?

[code="java"]
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import com.shenchen.model.Item;
import com.shenchen.type.Types;
import com.shenchen.util.Calculator;

public class Main {

public static void main(String[] args) throws Exception, IOException {

    InputStreamReader isr = new InputStreamReader(System.in);
    BufferedReader br = new BufferedReader(isr);
    Item item = new Item();
    Double num1 = Double.parseDouble( br.readLine());
    item.setNum1(num1);

    System.out.println("请输入一个运算符号:");
    String str = br.readLine();
    switch (str) {
    case "+":
        item.setType(Types.JIA);
        break;

    case "-":
        item.setType(Types.JIAN);
        break;

    case "*":
        item.setType(Types.CHENG);
        break;

    case "/":
        item.setType(Types.CHU);
        break;
    default:
        System.out.println("符号错误!");
        System.exit(0);
    }

    System.out.println("请输入一个数字:");
    Double num2 = Double.parseDouble(br.readLine());
    item.setNum2(num2);

    new Calculator(item);
}

}

public class Item {
double num1;
double num2;
int type;

public void setNum1(double num1) {
    this.num1 = num1;
}

public void setNum2(double num2) {
    this.num2 = num2;
}

public void setType(int type) {
    this.type = type;
}

public double getNum1() {
    return num1;
}

public double getNum2() {
    return num2;
}

public int getType() {
    return type;
}

}

public class Types {
public final static int JIA = 1;
public final static int JIAN = 2;
public final static int CHENG =3;
public final static int CHU = 4;

}

import com.shenchen.model.Item;
import com.shenchen.type.Types;

public class Calculator {
double result;
public Calculator(Item item) {
double num1 = item.getNum1();
double num2 = item.getNum2();
switch (item.getType()) {
case Types.JIA:
result = num1+num2;
System.out.println(num1+"+"+num2+" = "+result);
break;
case Types.JIAN:
result = num1-num2;
System.out.println(num1+"-"+num2+" = "+result);
break;
case Types.CHENG:
result = num1*num2;
System.out.println(num1+"*"+num2+" = "+result);
break;
case Types.CHU:
result = num1/num2;
System.out.println(num1+"/"+num2+" = "+result);
break;

}

}

}

[/code]

  • 写回答

2条回答 默认 最新

  • hukuas 2014-06-21 23:21
    关注

    将计算的抽一个接口出来ICalculator,具体计算实现该接口。如果要加功能,添加其它计算方法,添加实现类就好了,另外可以弄一个Factory负责创建这些Calculator。代码简单贴一下。

    [code="java"]
    public interface ICalculator {
    public double calculate(double ...args);
    }
    [/code]

    [code="java"]
    //加法
    public class PlusCalculator implements ICalculator {
    @Override
    public double calculate(double... args) {
    double res = 0;
    for(double arg:args)
    res += arg;
    return res;
    }
    }
    [/code]

    [code="java"]
    //减法
    public class MinusCalculator implements ICalculator {

    @Override
    public double calculate(double... args) {
        if (args.length == 0)
            return 0;
        double res = args[0];
        for (int i = 1; i < args.length; ++i) {
            res -= args[i];
        }
        return res;
    }
    

    }
    [/code]

    [code="java"]
    //平方
    public class SquareCalculator implements ICalculator {
    @Override
    public double calculate(double... args) {
    //只接受一个参数
    if(args.length == 1)
    return args[0]*args[0];
    else
    return 0;
    }
    }
    [/code]

    [code="java"]
    //操作类型
    public enum CalculatorType {
    PlusCalculator,MinusCalculator,SquareCalculator;
    }
    [/code]

    [code="java"]
    //工厂
    public class CalculatorFactory {

    public static ICalculator getCalculator(CalculatorType type) {
        ICalculator calculator = null;
        switch (type) {
        case MinusCalculator:
            calculator = new MinusCalculator();
            break;
        case PlusCalculator:
            calculator = new PlusCalculator();
            break;
        case SquareCalculator:
            calculator = new SquareCalculator();
            break;
        default:
            break;
        }
        return calculator;
    }
    

    }
    [/code]

    [code="java"]
    //测试代码
    public static void main(String[] args) {
    double arg1 = 100;
    double arg2 = 90;
    double arg3 = 80;
    ICalculator calculator = CalculatorFactory.getCalculator(CalculatorType.PlusCalculator);
    System.out.println(calculator.calculate(arg1,arg2,arg3));
    calculator = CalculatorFactory.getCalculator(CalculatorType.MinusCalculator);
    System.out.println(calculator.calculate(arg1,arg2,arg3));
    calculator = CalculatorFactory.getCalculator(CalculatorType.SquareCalculator);
    System.out.println(calculator.calculate(arg1));

    }
    

    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 HC32L176调试了一个通过TIMER5+DMA驱动WS2812B
  • ¥15 三菱FX系列PLC串口指令
  • ¥15 cocos的js代码调用wx.createUseInfoButton问题!
  • ¥15 关于自相关函数法和周期图法实现对随机信号的功率谱估计的matlab程序运行的问题,请各位专家解答!
  • ¥15 Python程序,深度学习,有偿私
  • ¥15 扫描枪扫条形码出现问题
  • ¥35 poi合并多个word成一个新word,原word中横版没了.
  • ¥15 【火车头采集器】搜狐娱乐这种列表页网址,怎么采集?
  • ¥15 求MCSCANX 帮助
  • ¥15 机器学习训练相关模型