标签:
1 public class Client 2 { 3 public static void main(String[] args) 4 { 5 //生成家庭作业控制类的实例 6 HomeWorkController homeWorkController=new HomeWorkController(); 7 //启动程序 8 homeWorkController.start(); 9 } 10 }
1 import java.util.Scanner; 2 3 /** 4 *隔离客户端与对象创建过程 5 *屏蔽对象创建细节 6 *封装客户端变化部分 7 *封装暂时不必要独立为类的琐碎功能 8 */ 9 10 public class HomeWorkController 11 { 12 /*成员变量、常量定义区*/ 13 14 //定义命令提示常量,可用数组封装,变化部分一 15 private static final String message1="您可以使用的命令如下:"; 16 private static final String message2="1 输入时间,查看相应日期的答卷,指令格式为0902,9月2号"; 17 private static final String message3="2 退出程序,指令为0000"; 18 private static final String message4="3 目前可执行日期为,0915"; 19 20 private String structions; //定义变量instructions,用于保存用户接收到的指令 21 HomeWork homeWork; //定义接口变量 22 private int state=0; //定义递归控制变量 23 24 /*方法执行区*/ 25 26 //程序启动方法,具体实现为面向过程的编程思想 27 public void start() 28 { 29 30 getInstructionsMessage(); //获得命令提示 31 32 getInstructions(); //控制台接收用户命令 33 34 getHomeWork(); //根据命令获取具体家庭作业实现类,变化部分二 35 36 homeWork.start(); //查看家庭作业题目及答卷 37 38 starts(); //递归实现循环查看家庭作业 39 40 } 41 42 /*方法实现区--底层逻辑区*/ 43 44 //命令提示方法实现 45 public void getInstructionsMessage() 46 { 47 System.out.println(message1); 48 System.out.println(message2); 49 System.out.println(message3); 50 System.out.println(message4); 51 } 52 //控制台接收指令方法实现 53 public void getInstructions() 54 { 55 Scanner scanner=new Scanner(System.in); 56 structions=scanner.nextLine(); 57 } 58 //简单工厂模式获取家庭作业实现类 59 public void getHomeWork() 60 { 61 switch(structions) 62 { 63 default: 64 homeWork=xxx1(); //匿名内部类实现接口消除空指针异常 65 break; 66 case "0000": 67 homeWork=xxx2(); //匿名内部类实现接口消除空指针异常 68 state=9999; 69 break; 70 case "0915": 71 homeWork=new HomeWork0915(); 72 break; 73 } 74 } 75 //用于错误指令调用的匿名内部类 76 public HomeWork xxx1() 77 { 78 return new HomeWork() 79 { 80 public void getHRMessage(){} 81 public void getHR(){} 82 public void start() 83 { 84 System.out.println(); 85 System.out.println("请输入正确命令!"); 86 System.out.println(); 87 } 88 }; 89 } 90 //用于退出指令调用的匿名内部类 91 public HomeWork xxx2() 92 { 93 return new HomeWork() 94 { 95 public void getHRMessage(){} 96 public void getHR(){} 97 public void start() 98 { 99 System.out.println("您已成功退出学生家庭作业查看系统,谢谢使用!"); 100 } 101 }; 102 } 103 //递归调用循环执行 104 public void starts() 105 { 106 if(state==0) 107 { 108 start(); 109 } 110 } 111 }
1 public interface HomeWork 2 { 3 void getHRMessage(); //获取家庭作业试题 4 void getHR(); //获取家庭作业答卷 5 void start(); //获取家庭作业 6 }
1 import java.util.Scanner; 2 public class HomeWork0915 implements HomeWork 3 { 4 /*方法调用区*/ 5 //实现接口,获取家庭作业题目 6 public void getHRMessage() 7 { 8 getMs(); 9 } 10 //实现接口,获取家庭作业答卷 11 public void getHR() 12 { 13 home1(); //第一题答卷 14 home2(); //第二题答卷 15 home3(); //第三题答卷 16 home4(); //第四题答卷 17 } 18 //实现接口,获取家庭作业 19 public void start() 20 { 21 getHRMessage(); 22 getHR(); 23 } 24 25 /*方法实现区*/ 26 //试题方法的实现 27 public void getMs() 28 { 29 System.out.println(); 30 System.out.println("14.已知2个一维数组:a[]={3,4,5,6,7},b[]={1,2,3,4,5,6,7};把数组a与数组b对应的元素乘积再赋值给数组b,如:b[2]=a[2]*b[2];最后输出数组b的元素。"); 31 System.out.println("15.找出如下数组中最大的元素和最小的元素,a[][]={{3,2,6},{6,8,2,10},{5},{12,3,23}}"); 32 System.out.println("16.按要求编写Java应用程序。编写一个名为Test的主类,类中只有一个主方法;在主方法中定义一个大小为50的一维整型数组,数组名为x,数组中存放着{1,3,5,…,99}输出这个数组中的所有元素,每输出十个换一行;在主方法中定义一个大小为10*10的二维字符型数组,数组名为y,正反对角线上存的是‘*’,其余位置存的是‘#’;输出这个数组中的所有元素。"); 33 System.out.println("17.从键盘上输入一个正整数n,请按照以下五行杨辉三角形的显示方式,输出杨辉三角形的前n行。请采用循环控制语句来实现。(三角形腰上的数为1,其他位置的数为其上一行相邻两个数之和。)"); 34 System.out.println(); 35 } 36 //题目一的实现方法 37 public void home1() 38 { 39 int[] a={3,4,5,6,7}; 40 int[] b={1,2,3,4,5,6,7}; 41 for(int i=0;i<a.length;i++) 42 { 43 b[i]*=a[i]; 44 } 45 System.out.println("题目一:"); 46 System.out.print("b数组的值是 "); 47 for(int i=0;i<b.length;i++) 48 { 49 System.out.print(b[i]+" "); 50 } 51 System.out.println(); 52 System.out.println(); 53 } 54 //题目二的实现方法 55 public void home2() 56 { 57 int[][] a={{3,2,6},{6,8,2,10},{5},{12,3,22}}; 58 int max=0; 59 int min=10000; 60 int change=0; 61 for(int i=0;i<a.length;i++) 62 { 63 for(int j=0;j<a[i].length;j++) 64 { 65 change=a[i][j]; 66 if(change>max) 67 { 68 max=change; 69 } 70 if(change<min) 71 { 72 min=change; 73 } 74 } 75 } 76 System.out.println("题目二:"); 77 System.out.println("最大值是 "+max); 78 System.out.println("最小值是 "+min); 79 } 80 //题目三的实现方法 81 public void home3() 82 { 83 System.out.println(); 84 System.out.println("题目三:"); 85 Text text=new Text(); 86 text.text1(); 87 text.text2(); 88 System.out.println(); 89 } 90 //题目四的实现方法 91 public void home4() 92 { 93 System.out.println("题目四:"); 94 System.out.println("请输入一个整数,范围在1到100之间,包括1跟100"); 95 System.out.println("友情提示:不是整数会报错"); //可使用scanner.nextLine()并加以过滤解决这个问题 96 Scanner scanner=new Scanner(System.in); 97 int n=scanner.nextInt(); 98 int[][] num=new int[100][100]; 99 if(n>0&&n<=100) 100 { 101 for(int i=1;i<=n;i++) 102 { 103 for(int j=1;j<=i;j++) 104 { 105 if(j==1||i==j) 106 { 107 num[i][j]=1; 108 System.out.print("1 "); 109 }else 110 { 111 num[i][j]=num[i-1][j]+num[i-1][j-1]; 112 System.out.print((num[i-1][j]+num[i-1][j-1])+" "); 113 } 114 } 115 System.out.println(); 116 } 117 }else 118 { 119 System.out.println("您输入的数值不合法,您需要输入一个正整数"); 120 } 121 System.out.println(); 122 } 123 } 124 125 //题目三需要定义的类 126 class Text 127 { 128 int[] x=new int[50]; 129 char[][] y=new char[10][10]; 130 public void text1() 131 { 132 for(int i=1;i<=50;i++) 133 { 134 x[i-1]=i*2-1; 135 } 136 for(int i=0;i<5;i++) 137 { 138 for(int j=0;j<10;j++) 139 { 140 System.out.print(x[j+10*i]+" "); 141 } 142 System.out.println(); 143 } 144 } 145 public void text2() 146 { 147 for(int i=0;i<10;i++) 148 { 149 for(int j=0;j<10;j++) 150 { 151 if(i==j||j==9-i) 152 { 153 y[i][j]=‘*‘; 154 System.out.print(y[i][j]); 155 }else 156 { 157 y[i][j]=‘#‘; 158 System.out.print(y[i][j]); 159 } 160 } 161 System.out.println(); 162 } 163 } 164 }
标签:
原文地址:http://www.cnblogs.com/kaililikai/p/5874495.html