简单工厂模式
一:
原:
package java1;
import java.util.*;
public class Java1{
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("请输入数字A:");
String A=scanner.nextLine();
System.out.println("请选择运算符号(+ - * /):");
String B=scanner.nextLine();
System.out.println("请输入数字B:");
String C=scanner.nextLine();
String D="";
if("+".equals(B)) {
D=(Double.parseDouble(A)+Double.parseDouble(C))+"";
}
if("-".equals(B)) {
D=(Double.parseDouble(A)-Double.parseDouble(C))+"";
}
if("*".equals(B)) {
D=(Double.parseDouble(A)*Double.parseDouble(C))+"";
}
if("/".equals(B)) {
D=(Double.parseDouble(A)/Double.parseDouble(C))+"";
}
System.out.println("结果是:"+D);
}
}
改:
package java1;
import java.util.*;
public class Java1{
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("请输入数字A:");
String strNumberA=scanner.nextLine();
System.out.println("请选择运算符号(+ - * /):");
String strOperator=scanner.nextLine();
System.out.println("请输入数字B:");
String strNumberB=scanner.nextLine();
String strResult="";
switch(strOperator.charAt(0)) {
case'+':strResult=(Double.parseDouble(strNumberA)+Double.parseDouble(strNumberB))+"";
break;
case'-':strResult=(Double.parseDouble(strNumberA)-Double.parseDouble(strNumberB))+"";
break;
case'*':strResult=(Double.parseDouble(strNumberA)*Double.parseDouble(strNumberB))+"";
break;
case'/':if(!"0".equals(strNumberB)) {
strResult=(Double.parseDouble(strNumberA)/Double.parseDouble(strNumberB))+"";
}
else strResult="除数不能为0";
break;
default:strResult="输入有错";
}
System.out.println("结果是:"+strResult);
}
}
二:
原:
package java1;
import java.util.*;
public class Java1{
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("请输入数字A:");
String A=scanner.nextLine();
System.out.println("请选择运算符号(+ - * /):");
String B=scanner.nextLine();
System.out.println("请输入数字B:");
String C=scanner.nextLine();
String D="";
if("+".equals(B)) {
D=(Double.parseDouble(A)+Double.parseDouble(C))+"";
}
if("-".equals(B)) {
D=(Double.parseDouble(A)-Double.parseDouble(C))+"";
}
if("*".equals(B)) {
D=(Double.parseDouble(A)*Double.parseDouble(C))+"";
}
if("/".equals(B)) {
D=(Double.parseDouble(A)/Double.parseDouble(C))+"";
}
System.out.println("结果是:"+D);
}
}
改:
package java1;
import java.util.*;
public class Java1{
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("请输入数字A:");
String strNumberA=scanner.nextLine();
System.out.println("请选择运算符号(+ - * /):");
String strOperator=scanner.nextLine();
System.out.println("请输入数字B:");
String strNumberB=scanner.nextLine();
String strResult="";
switch(strOperator.charAt(0)) {
case'+':strResult=(Double.parseDouble(strNumberA)+Double.parseDouble(strNumberB))+"";
break;
case'-':strResult=(Double.parseDouble(strNumberA)-Double.parseDouble(strNumberB))+"";
break;
case'*':strResult=(Double.parseDouble(strNumberA)*Double.parseDouble(strNumberB))+"";
break;
case'/':if(!"0".equals(strNumberB)) {
strResult=(Double.parseDouble(strNumberA)/Double.parseDouble(strNumberB))+"";
}
else strResult="除数不能为0";
break;
default:strResult="输入有错";
}
System.out.println("结果是:"+strResult);
}
}
二:
原:
package java1;
import java.util.*;
class Operation {
boolean flag; double result;
double GetResult(double numberA,double numberB, char operate) {
result=0;flag=true;
switch(operate) {
case'+': result=numberA+numberB;break;
case'-': result=numberA-numberB;break;
case'*': result=numberA*numberB;break;
case'/':
if(Math.abs(numberB-0.0)>=1e-6) {
result=numberA/numberB;break;
}
else {flag=false;return 0;}
break;
}
return result;
}
}
public class Java1{
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入数字A:");
double A=sc.nextDouble(); sc.nextLine();
System.out.println("请选择运算符号+ - */ ");
char op=sc.nextLine().charAt(0);
System.out.println("请输入数字B:");
double B=sc.nextDouble();
Operation oper=new Operation();
double D=oper.GetResult(A, B, op);
if(oper.flag) {
System.out.println("结果是:"+A+op+B'='+D);
}
else System.out.println("除数不能为0");
}
}
改1:
package java1;
import java.util.*;
abstract class Operation {
private double numberA =0;
private double numberB =0;
boolean flag =true;
public double setNumberA(double a) {
return a;
}
public double setNumberB(double b) {
return b;
}
public double getNumberA() {
return numberA;
}
public double getNumberB() {
return numberB;
}
public abstract double getResult();
}
class OperationAdd extends Operation{
public double getResult() {
return getNumberA()+getNumberB();
}
}
class OperationSub extends Operation{
public double getResult() {
return getNumberA()-getNumberB();
}
}
class OperationMul extends Operation{
public double getResult() {
return getNumberA()*getNumberB();
}
}
class OperationDiv extends Operation{
public double getResult() {
return getNumberA()/getNumberB();
}
}
public class Java1{
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
Operation add =new OperationAdd();
add.setNumberA(sc.nextDouble());
add.setNumberB(sc.nextDouble());
System.out.println("结果是:"+add.getResult());
}
}
改2:
package java1;
import java.util.*;
abstract class Operation {
private double numberA =0;
private double numberB =0;
boolean flag =true;
public double setNumberA(double a) {
return a;
}
public double setNumberB(double b) {
return b;
}
public double getNumberA() {
return numberA;
}
public double getNumberB() {
return numberB;
}
public abstract double getResult();
}
class OperationAdd extends Operation{
public double getResult() {
return getNumberA()+getNumberB();
}
}
class OperationSub extends Operation{
public double getResult() {
return getNumberA()-getNumberB();
}
}
class OperationMul extends Operation{
public double getResult() {
return getNumberA()*getNumberB();
}
}
class OperationDiv extends Operation{
public double getResult() {
return getNumberA()/getNumberB();
}
}
class OperationFactory{
public static Operation createOperate(char operate) {
Operation oper=null;
switch(operate) {
case'+':oper=new OperationAdd();break;
case'-':oper=new OperationSub();break;
case'*':oper=new OperationMul();break;
case'/':oper=new OperationDiv();break;
//增加 运算方法
}
return oper;
}
}
public class Java1{
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入数字A:");
double A=sc.nextDouble(); sc.nextLine();
System.out.println("请选择运算符号+ - */ ");
char op=sc.nextLine().charAt(0);
System.out.println("请输入数字B:");
double B=sc.nextDouble();
Operation oper;
oper=OperationFactory.createOperate(op);
oper.setNumberA(A);
oper.setNumberA(B);
System.out.println("结果是:"+oper.getResult());
}
}