设计Context类 实现模块的标识以及功能接口
package com.whf.obj;
public interface Context {
/***
* 功能模块标识
* @return
*/
public abstract String getname();
/***
* 功能实现
* @param s
*/
public abstract void work(String s[]);
}
解析命令及参数,再调用相应的功能模块
import com.whf.obj.Context;
public class TestMain{
Map<String,Context> filecls;
public TestMain(){
File f=new File("bin/test");
String[] files = f.list();
ArrayList<String > clss=new ArrayList<>();
filecls=new HashMap<>();
for(String s : files){
filecls.put((s.substring(0,s.indexOf('.'))),null);
}
}
public static void main(String avgr[]) throws ClassNotFoundException{
new TestMain().cmd();
}
public void UIinit(){
System.out.println("=================================");
System.out.println("=================================");
System.out.println("=================================");
}
public void cmd(){
UIinit();
while(true){
Scanner scan=new Scanner(System.in);
String avgr=scan.nextLine();
String[] avgrs = avgr.split(" ");
if(avgrs.length>0&&avgrs[0].length()>0){
if(avgrs[0].equals("help"))help();
else if(avgrs[0].equals("search"))search();
else{
Context context=getcontext(avgrs[0]);
if(avgrs.length==1)avgrs=new String[0];
else avgrs=Arrays.copyOfRange(avgrs, 1, avgrs.length);
if(context!=null)context.work(avgrs);
else System.out.println("错误:找不到该命令\n");
}
}
}
}
private Context getcontext(String str) {
Context context = filecls.get(str);
if(context==null)if(work(str))context = filecls.get(str);
return context;
}
private void help() {
System.out.println("help me");
}
public void search(){
Set<String> key = filecls.keySet();
int i=0;
for(String k :key){
System.out.printf("%d. %s\n", i++,k);
}
}
public boolean work(String filename){
Class cls;
try {
System.out.println("加载"+filename);
cls = Class.forName("test."+filename);
Object o = cls.newInstance();
Context c = (Context)o;
filecls.put(filename, c);
System.out.println("加载"+c.getname());
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
}
功能测试test1实现
public class test1 implements Context {
@Override
public String getname() {
// TODO Auto-generated method stub
return "test1";
}
@Override
public void work(String[] s) {
// TODO Auto-generated method stub
int n;
Scanner scan = new Scanner(System.in);
System.out.println("最大温度");
n = scan.nextInt();
for (int i = 0; i < n; i += 20) {
System.out.printf("%d %d\n", i, Math.round((5 / 9.0) * (i - 32)));
}
}
}
功能测试test2实现
public class test2 implements Context {
@Override
public String getname() {
// TODO Auto-generated method stub
return "test2";
}
@Override
public void work(String[] s) {
// TODO Auto-generated method stub
for (int i = 100; i < 999; i++) {
int kk = (int) (Math.pow(i / 100, 3) + Math.pow((i % 100) / 10, 3) + Math.pow(i % 10, 3));
if (i == kk) {
System.out.println(i);
}
}
}
}
功能测试test3实现
public class test3 implements Context {
@Override
public String getname() {
// TODO Auto-generated method stub
return "test3";
}
@Override
public void work(String[] s) {
BigInteger fac=BigInteger.valueOf(1);
BigInteger sum=BigInteger.valueOf(0);
for(int i=1;i<=20;i++){
fac=BigInteger.valueOf(1);
for(int j=1;j<=i;j++){
fac=fac.multiply(BigInteger.valueOf(j));
}
sum=sum.add(fac);
}
System.out.println(sum);
}
}
测试 test4
public class test4 implements Context {
@Override
public String getname() {
// TODO Auto-generated method stub
return "test4";
}
@Override
public void work(String[] s) {
// TODO Auto-generated method stub
// int
// n[][]={{1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5}};
int n[][];
System.out.println("输入方阵");
Scanner scan = new Scanner(System.in);
String strline = scan.nextLine();
String[] strnums = strline.split(" ");
n = new int[strnums.length][strnums.length];
for (int i = 0; i < strnums.length; i++) {
n[0][i] = Integer.parseInt(strnums[i]);
}
for (int i = 1; i < strnums.length; i++) {
for (int j = 0; j < strnums.length; j++) {
n[i][j] = scan.nextInt();
}
}
int sum = 0;
for (int i = 0; i < strnums.length; i++) {
sum += n[i][i];
}
System.out.println("对角线之和" + sum);
}
}
测试test5
public class test5 implements Context {
@Override
public String getname() {
// TODO Auto-generated method stub
return "test5";
}
@Override
public void work(String[] s) {
Scanner scan = new Scanner(System.in);
System.out.println("输入数组的长度");
int size = scan.nextInt();
int num[] = new int[size];
System.out.println("输入长度为" + size + "数组");
for (int i = 0; i < size; i++) {
num[i] = scan.nextInt();
}
int min, max;
for (int i = 0; i < size - 1; i++) {
if (num[0] < num[i + 1]) {
max = num[i + 1];
num[i + 1] = num[0];
num[0] = max;
}
}
for (int i = 0; i < size - 1; i++) {
if (num[size - 1] > num[i + 1]) {
min = num[i + 1];
num[i + 1] = num[size - 1];
num[size - 1] = min;
}
}
System.out.println("交换后的数组");
for (int i = 0; i < size; i++) {
System.out.print(num[i] + " ");
}
}
}