下面看下小菜写的程序代码
import java.util.Scanner;
public class test001 {
public static void main(String[] args) {
System.out.printf("请输入A:");
Scanner sc1=new Scanner(System.in);
String str1=sc1.nextLine();
System.out.printf("请输入 B:");
Scanner sc3=new Scanner(System.in);
String str3=sc3.nextLine();
int c=Integer.parseInt(str1)+Integer.parseInt(str3);
System.out.printf(Integer.toString(c));
}
}
咋一看好像没什么问题,应该实现的功能都实现了,就一个简单的加法。
然而他并没有被录取。
但是你可以先看下下面这种实现模式。
这个是类图
下面先看看实现的代码
Calculate.java(工厂)
package nsu.edu.cn;
public abstract class Calculate {
private long[] num;
private String fh;
public Calculate(long[] numNew, String fhNew) {
num = numNew;
fh = fhNew;
}
public long[] getNum () {
return num;
}
public String getFh () {
return fh;
}
public abstract long Cal();
}
AddCal.java
package nsu.edu.cn;
public class AddCal extends Calculate {
public AddCal(long[] numNew, String fhNew) {
super(numNew, fhNew);
}
@Override
public long Cal() {
long num[] = super.getNum();
return num[0] + num[1];
}
}
SubCal.java
package nsu.edu.cn;
public class SubCal extends Calculate {
public SubCal(long[] numNew, String fhNew) {
super(numNew, fhNew);
}
@Override
public long Cal() {
long num[] = super.getNum();
return num[0] - num[1];
}
}
MulCal.java
package nsu.edu.cn;
public class MulCal extends Calculate {
public MulCal(long[] numNew, String fhNew) {
super(numNew, fhNew);
}
@Override
public long Cal() {
long num[] = super.getNum();
return num[0] * num[1];
}
}
DivCal.java
package nsu.edu.cn;
public class DivCal extends Calculate {
public DivCal(long[] numNew, String fhNew) {
super(numNew, fhNew);
}
@Override
public long Cal() {
long num[] = super.getNum();
if (num[1] == 0) {
System.out.println("The Second Num Could not be 0");
}
return num[0] / num[1];
}
}
IO.java(用来接收用户输入输出的工具类)
package nsu.edu.cn;
import java.util.Scanner;
public class IO {
private long[] num;
private String fh;
public IO (){
num = new long[2];
fh = null;
Scanner scan = new Scanner(System.in);
System.out.println("Please input the first number:");
if (scan.hasNextInt())
num[0] = scan.nextInt();
System.out.println("Please input the second number:");
if (scan.hasNextInt())
num[1] = scan.nextInt();
System.out.println("Please input the Cal method:");
if (scan.hasNext())
fh = scan.next();
}
public void outputData () {
System.out.println("the first number is = " + num[0]);
System.out.println("the second number is = " + num[1]);
System.out.println("the Cal method is = " + fh);
}
public long[] getNum () {
return num;
}
public String getFh () {
return fh;
}
}
CalFactory.java
package nsu.edu.cn;
public class CalFactory {
private static long[] num;
private static String fh;
private static Calculate cal;
public static Calculate createCal(long[] numNew, String fhNew) throws Exception {
num = numNew;
fh = fhNew;
cal = null;
switch (fh) {
case "+": cal = new AddCal(num, fh);break;
case "-": cal = new SubCal(num, fh);break;
case "*": cal = new MulCal(num, fh);break;
case "/": if (num[1] == 0) {
throw new Exception("The Second Num Could not be 0");
}else {
cal = new DivCal(num, fh);
} break;
default : System.out.println("Wrong Cal Method"); break;
}
return cal;
} }
下面是测试类Cal.java
package nsu.edu.cn;
public class Cal {
public static void main(String[] args) throws Exception {
IO io = new IO();
Calculate calculate = CalFactory.createCal(io.getNum(), io.getFh());
System.out.println("The Answer is " + calculate.Cal());
}
}
测试的时候你需要根据输入提示来输入两个运算数字,后面还有一个操作符,但是只能是 + - * /