0915作业(后面帖子公共类部分在这里)

 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 }
View Code
  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 }
View Code
1 public interface HomeWork
2 {
3     void getHRMessage();    //获取家庭作业试题
4     void getHR();        //获取家庭作业答卷
5     void start();        //获取家庭作业
6 }
View Code
  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 }
View Code
原文地址:https://www.cnblogs.com/kaililikai/p/5874495.html