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