Java面向对象程序设计课后答案(3)

2019-03-04 12:45

习题8

采用新增的策略为选手计算得分。

增加新的具体策略StrategyFour。StrategyFour类将double computeScore(double [] a)方法实现为去掉数组a的元素中的一个最大值和一个最小值,然后计算剩余元素的几何平均值。 import java.util.Arrays;

public class StrategyFour implements ComputableStrategy { public double computeScore(double [] a) { if(a.length<=2) return 0;

double score=0,multi=1; Arrays.sort(a); int n=a.length-2;

for(int i=1;i<a.length-1;i++) { multi=multi*a[i]; }

score=Math.pow(multi,1.0/n); return score; } } 2.

(1)策略(Strategy)PrintCharacter.java public interface PrintCharacter{

public abstract void printTable(char [] a,char[] b); }

(2) 具体策略 PrintStrategyOne.java

public class PrintStrategyOne implements PrintCharacter { public void printTable(char [] a,char[] b) { for(int i=0;i<a.length;i++) { System.out.print(a[i]+","); }

for(int i=0;i<b.length;i++) { System.out.print(b[i]+","); }

System.out.println(""); } }

PrintStrategyTwo.java

public class PrintStrategyTwo implements PrintCharacter { public void printTable(char [] a,char[] b) {

for(int i=0;i<a.length;i++) {

System.out.print(b[i]+","+a[i]+","); }

} }

(3)上下文 PrintGame.java public class PrintGame { PrintCharacter strategy;

public void setStrategy(PrintCharacter strategy) { this.strategy=strategy; }

public void getPersonScore(char[] a,char[] b){ if(strategy==null)

System.out.println("sorry!"); else

strategy.printTable(a,b); } } 应用以

上策略: public class Application {

public static void main(String args[]) { char [] a=new char[26]; char [] b=new char[26]; for(int i=0;i<=25;i++){ a[i]=(char)('a'+i); }

for(int i=0;i<=25;i++){ b[i]=(char)('A'+i); }

PrintGame game=new PrintGame(); //上下文对象

game.setStrategy(new PrintStrategyOne()); //上下文对象使用策略一

System.out.println("方案1:"); game.getPersonScore(a,b);

game.setStrategy(new PrintStrategyTwo()); //上下文对象使用策略二 System.out.println("方案2:"); game.getPersonScore(a,b); } }

3.参照本章8.3.3自主完成。

习题9 1.A,B,D 2. Love:Game 3.13 abc夏日 4.13579 5.9javaHello 6.

public class Xiti6 {

public static void main (String args[ ]) { String s1,s2,s3,t1="ABCDabcd";

System.out.println("字符串原来是这个样子: "+t1); s1=t1.toUpperCase();

System.out.println("字符串中的小写字母变成大写是这个样子: "+s1); s2=t1.toLowerCase();

System.out.println("字符串中的大写字母变成小写是这个样子: "+s2); s3=s1.concat(s2);

System.out.println("大写字符串连接小写字符串是这个样子: "+s3); } } 7. class Xiti7

{ public static void main(String args[ ]) { String s ="中华人民共和国"; char a=s.charAt(0); char b=s.charAt(6);

System.out.println("第一个字符: "+a); System.out.println("最后一个字符: "+b); } } 8.

import java.util.*; class Xiti8

{ public static void main(String args[]){ int year,month;

System.out.println("请输入年份和月份,每输入一个数回车确认"); Scanner reader=new Scanner(System.in); year= reader.nextInt(); month= reader.nextInt(); String [] day=new String[42];

System.out.println(" 日 一 二 三 四 五 六"); Calendar rili=Calendar.getInstance();

rili.set(year,month-1,1);//将日历翻到year年month月1日,注意0表示一月...11表示十二月

int 星期几=rili.get(Calendar.DAY_OF_WEEK)-1; int dayAmount=0;

if(month==1||month==3||month==5||month==7||month==8||month==10||month==12) dayAmount=31;

if(month==4||month==6||month==9||month==11) dayAmount=30; if(month==2)

if(((year%4==0)&&(year0!=0))||(year@0==0)) dayAmount=29; else

dayAmount=28;

for(int i=0;i<星期几;i++) day[i]="";

for(int i=星期几,n=1;i<星期几+dayAmount;i++){ if(n<=9)

day[i]=String.valueOf(n)+" " ; else

day[i]=String.valueOf(n); n++; }

for(int i=星期几+dayAmount;i<42;i++) day[i]=""; for(int i=0;i<星期

几;i++) { day[i]="**"; }

for(int i=0;i<day.length;i++) { if(i%7==0)

{ System.out.println(""); }

System.out.print(" "+day[i]); } } } 9.

import java.util.*; class Xiti9

{ public static void main(String args[]){ int year1,month1,day1,year2,month2,day2; Scanner reader=new Scanner(System.in);


Java面向对象程序设计课后答案(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2018年中国家禽养殖行业分析报告-市场深度分析与投资前景研究(目

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: