简单计算器
package jisuanqi;
import java.util.Scanner;
public class jisuanqi {
public static void main (String [] args) {
Scanner s=new Scanner(System.in);
int num1=s.nextInt();
String option=s.next();
int num2=s.nextInt();
int result=0;
if((option).equals("+"))
result=num1+num2;
if((option).equals("-"))
result=num1-num2;
if((option).equals("*"))
result=num1*num2;
if((option).equals("/"))
result=num1/num2;
System.out.println("="+result);
}
}
规范的计算器
package jisuanqi;
import java.util.Scanner;
public class jisuanqi {
public static void main(String[] args) {
try {
Scanner s = new Scanner(System.in);
System.out.println("请输入数字1:");
int num1 = s.nextInt();
System.out.println("请输入运算操作(+/-/*//):");
String option = s.next();
System.out.println("请输入数字2:");
int num2 = s.nextInt();
int result = 0;
switch (option) {
case "+":
result = num1 + num2;
break;
case "-":
result = num1 - num2;
break;
case "*":
result = num1 * num2;
break;
case "/":
if (num2 == 0)
System.out.println("被除数不能为零!");
else
result = num1 / num2;
break;
}
System.out.println("=" + result);
} catch (Exception e) {
e.printStackTrace();
}
}
}
业务的封装,业务、界面分离
operation运算类
package jisuanqi;
public class operation {
public int getresult(int num1,String operate,int num2) {
int result=0;
switch(operate) {
case "+":result=num1+num2;break;
case "-":result=num1-num2;break;
case "*":result=num1*num2;break;
case "/":result=num1/num2;break;
}
return result;
}
}
客户端
package jisuanqi;
import java.util.Scanner;
public class client {
public static void main (String [] args) {
try {
Scanner s=new Scanner(System.in);
System.out.println("请输入数字1:");
int num1=s.nextInt();
System.out.println("请输入运算操作(+/-/*//):");
String operation=s.next();
System.out.println("请输入数字2:");
int num2=s.nextInt();
operation opt=new operation();
int result=opt.getresult(num1,operation,num2);
System.out.println("="+result);
}catch(Exception e) {
e.printStackTrace();
}
}
}
把加减乘除等运算分离,即使增加修改一个运算不会影响其他的几个
(代码分层次,不能暴露给所有人,有危险)
简单工厂模式:
package jisuanqi;
public class operation {
int num1;
int num2;
String operation;
public int getnum1() {
return num1;
}
public void setnum1(int num1) {
this.num1=num1;
}
public int getnum2() {
return num2;
}
public void setnum2(int num2) {
this.num2=num2;
}
public int getresult() {
int result=0;
return result;
}
}
package jisuanqi;
public class operationfactory {
public static operation createoperation(String operation) {
operation oper=null;
switch(operation) {
case"+":oper=new add();break;
case"-":oper=new sub();break;
case"*":oper=new mul();break;
case"/":oper=new div();break;
}
return oper;
}
}
package jisuanqi;
public class add extends operation{
public int getresult() {
int result=getnum1()+getnum2();
return result;
}
}
package jisuanqi;
public class sub extends operation{
public int getresult() {
int result=getnum1()-getnum2();
return result;
}
}
package jisuanqi;
public class mul extends operation{
public int getresult() {
int result=getnum1()*getnum2();
return result;
}
}
package jisuanqi;
public class div extends operation {
public int getresult() {
if (getnum2() == 0) {
System.out.println("被除数不能为零!");
return -1;
} else {
int result = getnum1() / getnum2();
return result;
}
}
}
package jisuanqi;
import java.util.Scanner;
public class client {
public static void main (String [] args) {
Scanner s=new Scanner(System.in);
System.out.println("请输入数字1:");
int num1=s.nextInt();
System.out.println("请输入运算操作:");
String operation=s.next();
System.out.println("请输入数字2:");
int num2=s.nextInt();
operation oper=operationfactory.createoperation(operation);
oper.setnum1(num1);
oper.setnum2(num2);
int result=oper.getresult();
System.out.println("="+result);
}
}