广东自考JAVA语言程序设计一课后习题答案和源代码第四章.docx
- 文档编号:23719271
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:28
- 大小:43.08KB
广东自考JAVA语言程序设计一课后习题答案和源代码第四章.docx
《广东自考JAVA语言程序设计一课后习题答案和源代码第四章.docx》由会员分享,可在线阅读,更多相关《广东自考JAVA语言程序设计一课后习题答案和源代码第四章.docx(28页珍藏版)》请在冰豆网上搜索。
广东自考JAVA语言程序设计一课后习题答案和源代码第四章
第四章1
4.9声明MyDate类1
4.10求前n个质数5
4.11编写实现从两个字符串中找出最长的相同字符列的代码。
6
4.12整理字符串7
4.13编写用数组实现大整数的类,提供大整数的加、减、乘等运算。
8
第四章
4.9声明MyDate类,功能:
增加1天,增减1月和增加1年的方法;输出MyDate对象日期的方法;求两个MyDate对象日期差的方法。
并提供能用当前日期初始化MyDate类对象的构造方法。
程序运行结果:
源文件:
MyDate.java
importjava.util.Calendar;
/**
*日历类
*@author黎明你好
*/
publicclassMyDate
{
publicstaticlongYEAR_MSEL=1000*60*60*24*365L;
publicstaticlongMONTH_MSEL=1000*60*60*24*30L;
publicstaticlongDATE_MSEL=1000*60*60*24L;
publicstaticlongHOUR_MSEL=1000*60*60L;
publicstaticlongMINUTE_MSEL=1000*60L;
privateintyear;
privateintmonth;
privateintdate;
privateinthour;
privateintminute;
privateintsecond;
privateCalendarcalendar;
/**
*构造方法使用当前时间日期初始化对象
*/
publicMyDate()
{
calendar=Calendar.getInstance();
year=calendar.get(Calendar.YEAR);
month=calendar.get(Calendar.MONTH)+1;
date=calendar.get(Calendar.DAY_OF_MONTH);
hour=calendar.get(Calendar.HOUR_OF_DAY);
minute=calendar.get(Calendar.MINUTE);
second=calendar.get(Calendar.SECOND);
}
/**
*构造方法使用指定年、月、日初始化对象
*/
publicMyDate(intyear,intmonth,intdate)
{
set(year,month,date);
}
/**
*构造方法使用指定年、月、日、时、分、秒初始化对象
*/
publicMyDate(intyear,intmonth,intdate,inthourOfDay,intminute,intsecond)
{
set(year,month,date,hourOfDay,minute,second);
}
/**
*设置日历字段year、month和date的值。
*@paramyear-用来设置YEAR日历字段的值。
*@parammonth-用来设置month日历字段的值。
*@paramdate-用来设置date日历字段的值。
*/
publicvoidset(intyear,intmonth,intdate)
{
set(year,month,date,0,0,0);
}
/**
*设置日历字段year、month和date的值。
*@paramyear-用来设置YEAR日历字段的值。
*@parammonth-用来设置month日历字段的值。
*@paramdate-用来设置date日历字段的值。
*@paramhourOfDay-用来设置hour日历字段的值。
*@paramminute-用来设置minute日历字段的值。
*@paramsecond-用来设置second日历字段的值。
*/
publicvoidset(intyear,intmonth,intdate,inthourOfDay,intminute,intsecond)
{
calendar=Calendar.getInstance();
calendar.set(year,month-1,date,hourOfDay,minute,second);
this.year=calendar.get(Calendar.YEAR);;
this.month=calendar.get(Calendar.MONTH)+1;
this.date=calendar.get(Calendar.DAY_OF_MONTH);
this.hour=calendar.get(Calendar.HOUR_OF_DAY);
this.minute=calendar.get(Calendar.MINUTE);
this.second=calendar.get(Calendar.SECOND);
}
/**
*增加一天
*/
publicvoidaddOneDay()
{
date++;
calendar.set(year,month,date);
}
/**
*增减一月
*/
publicvoidaddOneMonth()
{
month++;
calendar.set(year,month,date);
}
/**
*增加一年
*/
publicvoidaddOneYear()
{
year++;
calendar.set(year,month,date);
}
/**
*返回此时间值,以毫秒为单位。
*@return-当前时间,以从历元至现在所经过的UTC毫秒数形式。
*/
publiclonggetTimeInMillis()
{
returncalendar.getTimeInMillis();
}
/**
*两个日期相差的时间
*@parammd-另一个日期对象
*@return-相差的时间
*/
publicStringapart(MyDatemd)
{
longmsel=this.getTimeInMillis()-md.getTimeInMillis();
msel=Math.abs(msel);
booleanboo=msel>0?
true:
false;
longyear=msel/MyDate.YEAR_MSEL;
longdate=msel%MyDate.YEAR_MSEL/MyDate.DATE_MSEL;
longhour=msel%MyDate.DATE_MSEL/MyDate.HOUR_MSEL;
longminute=msel%MyDate.HOUR_MSEL/MyDate.MINUTE_MSEL;
longsecond=msel%MyDate.MINUTE_MSEL/1000;
Stringresult="";
if(boo)
result="已过去";
else
result="还有";
result+=(year+"年"+date+"天"+hour+"小时"+minute+"分钟"+second+"秒");
returnresult;
}
/**
*返回此日历的字符串表示形式。
*@return-此日历的字符串表示形式。
*/
publicStringtoString()
{
returnyear+"年"+month+"月"+date+"日,"+hour+":
"+minute+":
"+second;
}
}
测试类源文件:
TestMyDate.java
/**
*MyDate的测试类
*@author黎明你好
*/
publicclassTestMyDate
{
publicstaticvoidmain(String[]args)
{
MyDatemd1=newMyDate();
MyDatemd2=newMyDate(2010,2,13);
MyDatemd3=newMyDate(2008,8,8,20,0,0);
System.out.println("当前时间:
"+md1.toString());
System.out.println("2010年除夕:
"+md2.toString());
md2.addOneDay();
System.out.println("增加一天后,大年初一:
"+md2.toString());
System.out.println("现在距新年:
"+md1.apart(md2));
System.out.println("现在距08年北京奥运会:
"+md1.apart(md3));
}
}
4.10求前n个质数。
要求确定m是否是质数,用早先求出的质数对m的整除性来确定。
/**
*求前n个质数。
*确定m是否是质数,用早先求出的质数对m的整除性来确定。
*@author黎明你好
*/
publicclassWork4_10
{
/**用来存质数的数组*/
privateintarrayInt[];
publicWork4_10(intn)
{
arrayInt=newint[n];
arrayInt[0]=2;
intindex=1;//保存数组的有效长度
booleanboo=true;
for(inti=2;i { boo=true; for(intj=0;j { if(i%arrayInt[j]==0)//用已存入数组中的质数判断 boo=false; } if(boo)//如果是true则是指数,存入数组,数组有效长度加1. { arrayInt[index]=i; index++; } } } /** *打印数组元素 */ publicStringprintArray() { Stringresult=""; for(inti=0;i { if(arrayInt[i]! =0) result+=arrayInt[i]+""; } returnresult; } publicstaticvoidmain(String[]args) { Work4_10w=newWork4_10(100); System.out.println(w.printArray()); } } 4.11编写实现从两个字符串中找出最长的相同字符列的代码。 程序运行结果: /** *找出两个字符串中,最长的相同字符列 *@author黎明你好 */ publicclassWork4_11 { publicstaticvoidmain(String[]args) { Stringstr1="0000abcdef0000"; Stringstr2="123ab4567cdef789abcdef"; Stringstr3=getLongSameString(str1,str2); System.out.println("str1="+str1); System.out.println("str2="+str2); System.out.println("最长的相同字符串为: "+str3); } publicstaticStringgetLongSameString(Stringstr1,Stringstr2) { Stringtemp=""; Stringsame=""; StringlongSame=""; for(inti=0;i { for(intj=i+1;j<=str1.length();j++) { temp=str1.substring(i,j); if(str2.indexOf(temp)>0) { same=temp; if(longSame.length() { longSame=temp; } } } } returnlongSame; } } 4.12整理字符串,将字符串的前导空白符和后随空白符删去,并将字符串中非空白字符之间的连接的多个空白符只保留一个,而去掉多余的空白符。 程序运行结果: publicclassWork4_12 { publicstaticvoidmain(String[]args) { Stringstr="ILoveYou"; System.out.println("str="+str); System.out.println("变换后: "+deleteBlank(str)); } publicstaticStringdeleteBlank(Stringstr) { chararray[]=str.trim().toCharArray(); Stringresult=""; for(inti=0;i { if(! (array[i]==''&&array[i+1]=='')) result+=array[i]; } returnresult; } } 4.13编写用数组实现大整数的类,提供大整数的加、减、乘等运算。 程序运行结果: 大整数类源文件: MyBigInteger.java /** *大整数类 *@author黎明你好 */ publicclassMyBigInteger { /**能存储的最大位数*/ publicstaticfinalintMAXLENGTH=100; /**正负号标识*/ privateintsignum=1; /**实际存储用的数组*/ privateintdataArray[]; /** *将参数的十进制字符串表示形式转换为BigInteger。 *@paramval-要转换的十进制字符串表示形式。 */ publicMyBigInteger(Stringval) { this.setData(val); } /** *声明一个MAXLENGTH位的,空的大整数类 */ publicMyBigInteger() { dataArray=newint[MyBigInteger.MAXLENGTH]; } /** *根据十进制字符串表示形式转换为MyBigInteger的数据 *@paramstr-十进制字符串表示形式。 */ publicvoidsetData(Stringstr) { dataArray=newint[MyBigInteger.MAXLENGTH]; try { intend=0; signum=1; if(str.charAt(0)=='-') { signum=-1; end=1; } intindex=0; for(inti=str.length()-1;i>=end;i--) { dataArray[index++]=Integer.parseInt(String.valueOf(str.charAt(i))); } } catch(NumberFormatExceptione) { e.printStackTrace(); } } /** *加法,返回其值为(this+val)的BigInteger。 *@paramval-将添加到此BigInteger中的值。 *@return-this+val */ publicMyBigIntegeradd(MyBigIntegerval) { MyBigIntegerresult=newMyBigInteger(); if(this.signum>0&&val.signum<0)//正+负: 转化成(正-正)的减法,进行计算 { returnthis.subtract(val.abs()); } elseif(this.signum<0&&val.signum>0)//负+正: 转换成(负-负)的减法,进行计算 { MyBigIntegertemp=val.abs(); temp.signum=-1; returnthis.subtract(temp); } elseif(this.signum>0&&val.signum>0)//正+正: 直接相加,结果为正 result.signum=1; elseif(this.signum<0&&val.signum<0)//负+负: 直接相加,结果为负 result.signum=-1; intmaxlength=Math.max(this.length(),val.length()); for(inti=0;i { result.dataArray[i]+=this.dataArray[i]+val.dataArray[i]; result.carryBit(i); } returnresult; } /** *减法,返回其值为(this-val)的BigInteger。 *@paramval-从此BigInteger中减去的值。 *@return-this-val */ publicMyBigIntegersubtract(MyBigIntegerval) { MyBigIntegerresult=newMyBigInteger(); //正-负: 转化成(正+正)的加法,进行计算 if(this.signum>0&&val.signum<0) { result=this.add(val.abs()); } //负-正: 转换成(负+负)的加法,进行计算 elseif(this.signum<0&&val.signum>0) { MyBigIntegertemp=val.abs();//注意这里,如果直接改变val,会会改观引用原先的对象的属性 temp.signum=-1; result=this.add(temp); } //负-负: 转换成正-正,调换位置 elseif(this.signum<0&&val.signum<0) { result=val.abs().subtract(this.abs()); } //正-正,用大的减小的,符号取决于绝对值大的 elseif(this.signum>0&&val.signum>0) { MyBigIntegermax,min; intsign=pareTo(val); if(sign==0)//如果相等 returnnewMyBigInteger("0"); elseif(sign>0) { max=this; min=val; result.signum=1; } else { max=val; min=this; result.signum=-1; } for(inti=0;i { result.dataArray[i]+=max.dataArray[i]-min.dataArray[i]; result.borrowBit(i); } } returnresult; } /** *乘法,返回其值为(this*val)的BigInteger。 *@paramval-要乘以此BigInteger的值。 *@return-this*val */ publicMyBigInt
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 广东 自考 JAVA 语言程序设计 课后 习题 答案 源代码 第四