Java语言程序设计试题及答案2.docx
- 文档编号:3599638
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:43
- 大小:102.30KB
Java语言程序设计试题及答案2.docx
《Java语言程序设计试题及答案2.docx》由会员分享,可在线阅读,更多相关《Java语言程序设计试题及答案2.docx(43页珍藏版)》请在冰豆网上搜索。
Java语言程序设计试题及答案2
Java语言程序设计试题及答案
第四章数组和字符串
4.1举例说明如何声明、创建和初始化数组。
答:
声明数组:
inta[]或int[]a
创建数组:
a=newint[]
初始化inta[]={1,2,3,4,5}
4.2举例说明如何声明、创建和初始化数组。
答:
声明多维数组:
inta[][]或int[]a[]或int[][]a
创建数组:
a=newint[][]
初始化inta[][]={{1,2,3,4,5}{6,7,8,9,10}}
4.3一个数组能够存储不同类型的元素吗?
答:
不能。
因为数组是将一组相同类型的数据顺序存储,组成一种复合数据类型。
特例:
如果将数组声明为Object类型,因为所有数据类型都直接或间接继承自Object父类,所以该数组可存储所有类型的元素。
Object[]objects=newObject[3];
inti=1;
Stringstring="abc";
booleanb=true;
objects[0]=i;
objects[1]=string;
objects[2]=b;
4.4编写一个Java程序,形成以下形式的二维数组,并输出。
1 2 9 10 25
4 3 8 11 24
5 6 7 12 23
16 15 14 13 22
17 18 19 20 21
解一:
publicstaticvoidmain(Stringargs[]){
intintArray[][]={{1,2,9,10,25},
{4,3,8,11,24},
{5,6,7,12,23},
{16,15,14,13,22},
{17,18,19,20,21}};
for(inti=0;i<=4;i++){
for(intj=0;j<=4;j++){
if(intArray[i][j]/10==0)
System.out.print(""+intArray[i][j]+"");
else
System.out.print(intArray[i][j]+"");
}
System.out.println("");
}
}
解二:
publicstaticvoidmain(String[]args){
introw=5;//这里控制输出的行列请保证行列相等
int[][]a=newint[row][row];
a[0][0]=1;
intn=2,zero=0,change=1;
intvalue=2;
for(inti=1;i for(intj=0;j<(2*n-1);j++){ if(i%2! =0){ if(j<(2*n-2)/2){ a[zero++][change]=value++; continue; } if(j==(2*n-2)/2){ a[j][j]=value++; } if(j>(2*n-2)/2){ a[change][--zero]=value++; } }else{ if(j<(2*n-2)/2){ a[change][zero++]=value++; continue; } if(j==(2*n-2)/2){ a[j][j]=value++; } if(j>(2*n-2)/2){ a[--zero][change]=value++; } } } n++; change++; zero=0; } Stringout=""; for(inti=0;i for(intj=0;j out=""+a[i][j]; if(out.length()==1) out=""+out; System.out.print(out+""); } System.out.println(); } } 4.5java中的字符数组与字符串有什么区别? 答: 字符数组是由类型为char的字符元素组成的,每个元素位置存储一个字符元素,对于数组名为s的数组,用chars[]表示。 字符串是由0个或多个字符组成的序列,是一个对象,对于对象名为s用Strings表示。 4.6确定一个字符数组长度与确定一个String对象的长度有什么不同? 答: 确定一个字符数组的长度用数组名.length,而确定一个String对象的长度用对象名.length() 4.7用toUpperCase()和toLowerCase()方法实现大小写转换 答: publicclassUpperAndLowerTest{ publicstaticvoidmain(Stringargs[]){ Strings1=("ABCdefgHIJkhl123"),s2,s3; System.out.println("未转换时的字符串s1="+s1); bytet1[]=s1.getBytes();//将字符串s1转换成字节数组t1 s2=s1.toUpperCase();//将字符串s1的字母全部转换成大写并保存到s2 s3=s1.toLowerCase();//将字符串s1的字母全部转换成小写并保存到s3 bytet2[]=s2.getBytes();//将字符串s2转换成字节数组t2 bytet3[]=s3.getBytes();//将字符串s1转换成字节数组t3 for(inti=0;i if(t1[i]! =t2[i])//如果t1[i]不是大写字母而是小写字母 t1[i]=t2[i];//将小写字母转换成大写字母 else//如果是大写字母 t1[i]=t3[i];//将大写字母转换成小写字母 } s1=newString(t1);//将字节数组t1转化成字符串保存到s1中 System.out.println("进行字母大小写转换后的s1="+s1); } } 4.8编写一个程序通过连接两个字符串得到一个新字符串并输出。 答: publicclassConcatTest{ publicstaticvoidmain(Stringargs[]){ Stringstr1="abcd"; Stringstr2="efgh"; Stringstr3=str1.concat(str2); System.out.println("str3="+str3); } } 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(2014,1,30); System.out.println("当前时间: "+md1.toString()); System.out.println("2014年除夕: "+md2.toString()); md2.addOneDay(); System.out.println("增加一天后,大年初一: "+md2.toString()); } } 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(Stringargs[]){ Stringstr="ILoveYou"; str=str.trim(); StringTokenizers=newStringTokenizer(str); StringnewStr=""; while(s.hasMoreTokens()){ newStr=newStr+""+s.nextToken(); } System.out.println("旧字符串: "+str); System.out.println("处理后新字符串: "+newStr); } } 4.13编写用数组实现大整数的类,提供大整数的加、减、乘等运算。 程序运行结果: 大整数类源文件: MyBigInteger.java /** *大整数类 *@author段智敏 */ publicclassMyBigInteger { /**能存储的最大位数*/ publicstaticfinalintMAXLENGTH=100; /**正负号标识*/ privateintsignum=1; /**实际存储用的数组*/ privateintdataArray[]; /** *将参数的十进制字符串表示形式转换为BigInteger。 *@paramval-要转换的十进制字符串表示形式。 */ pub
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 语言程序设计 试题 答案