更新時(shí)間:2020-03-19 10:31:59 來源:動(dòng)力節(jié)點(diǎn) 瀏覽2719次
編寫一個(gè)程序,將a.txt文件中的單詞與b.txt文件中的單詞交替合并到c.txt文件中,a.txt文件中的單詞用回車符分隔,b.txt文件中用回車或空格進(jìn)行分隔。
packagecn.itcast;
importjava.io.File;
importjava.io.FileReader;
importjava.io.FileWriter;
publicclassMainClass{
publicstaticvoidmain(String[]args)throwsException{
FileManagera=newFileManager("a.txt",newchar[]{'\n'});
FileManagerb=newFileManager("b.txt",newchar[]{'\n',''});
FileWriterc=newFileWriter("c.txt");
StringaWord=null;
StringbWord=null;
while((aWord=a.nextWord())!=null){
c.write(aWord+"\n");
bWord=b.nextWord();
if(bWord!=null)
c.write(bWord+"\n");
}
while((bWord=b.nextWord())!=null){
c.write(bWord+"\n");
}
c.close();
}
}
classFileManager{
String[]words=null;
intpos=0;
publicFileManager(Stringfilename,char[]seperators)throwsException{
Filef=newFile(filename);
FileReaderreader=newFileReader(f);
char[]buf=newchar[(int)f.length()];
intlen=reader.read(buf);
Stringresults=newString(buf,0,len);
Stringregex=null;
if(seperators.length>1){
regex=""+seperators[0]+"|"+seperators[1];
}else{
regex=""+seperators[0];
}
words=results.split(regex);
}
publicStringnextWord(){
if(pos==words.length)
returnnull;
returnwords[pos++];
}
}編寫一個(gè)程序,將d:\java目錄下的所有.java文件復(fù)制到d:\jad目錄下,并將原來文件的擴(kuò)展名從.java改為.jad。
listFiles方法接受一個(gè)FileFilter對(duì)象,這個(gè)FileFilter對(duì)象就是過慮的策略對(duì)象,不同的人提供不同的FileFilter實(shí)現(xiàn),即提供了不同的過濾策略。
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileOutputStream;
importjava.io.FilenameFilter;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.OutputStream;
publicclassJad2Java{
publicstaticvoidmain(String[]args)throwsException{
FilesrcDir=newFile("java");
if(!(srcDir.exists()&&srcDir.isDirectory()))
thrownewException("目錄不存在");
File[]files=srcDir.listFiles(
newFilenameFilter(){
publicbooleanaccept(Filedir,Stringname){
returnname.endsWith(".java");
}
}
);
System.out.println(files.length);
FiledestDir=newFile("jad");
if(!destDir.exists())destDir.mkdir();
for(Filef:files){
FileInputStreamfis=newFileInputStream(f);
StringdestFileName=f.getName().replaceAll("\\.java$",".jad");
FileOutputStreamfos=newFileOutputStream(newFile(destDir,destFileName));
copy(fis,fos);
fis.close();
fos.close();
}
}
privatestaticvoidcopy(InputStreamips,OutputStreamops)throwsException{
intlen=0;
byte[]buf=newbyte[1024];
while((len=ips.read(buf))!=-1){
ops.write(buf,0,len);
}
}
}編寫一個(gè)截取字符串的函數(shù),輸入為一個(gè)字符串和字節(jié)數(shù),輸出為按字節(jié)截取的字符串,但要保證漢字不被截取半個(gè),如“我ABC”,4,應(yīng)該截取“我AB”,輸入“我ABC漢DEF”,6,應(yīng)該輸出“我ABC”,而不是“我ABC+漢的半個(gè)”。
首先要了解中文字符有多種編碼及各種編碼的特征。
假設(shè)n為要截取的字節(jié)數(shù)。
publicstaticvoidmain(String[]args)throwsException{
Stringstr="我a愛中華abc我愛傳智def';
Stringstr="我ABC漢";
intnum=trimGBK(str.getBytes("GBK"),5);
System.out.println(str.substring(0,num));
}
publicstaticinttrimGBK(byte[]buf,intn){
intnum=0;
booleanbChineseFirstHalf=false;
for(inti=0;i<n;i++)
{
if(buf[i]<0&&!bChineseFirstHalf){
bChineseFirstHalf=true;
}else{
num++;
bChineseFirstHalf=false;
}
}
returnnum;
}遞歸算法題
第1個(gè)人10,第2個(gè)比第1個(gè)人大2歲,依次遞推,請(qǐng)用遞歸方式計(jì)算出第8個(gè)人多大?
packagecn.itcast;
importjava.util.Date;
publicclassA1{
publicstaticvoidmain(String[]args)
{
System.out.println(computeAge(8));
}
publicstaticintcomputeAge(intn)
{
if(n==1)return10;
returncomputeAge(n-1)+2;
}
}
publicstaticvoidtoBinary(intn,StringBufferresult)
{
if(n/2!=0)
toBinary(n/2,result);
result.append(n%2);
}以上就是動(dòng)力節(jié)點(diǎn)Java培訓(xùn)機(jī)構(gòu)小編介紹的“三道Java遞歸算法筆試題”的內(nèi)容,希望對(duì)大家有幫助,如有疑問,請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。
相關(guān)閱讀
Java實(shí)驗(yàn)班
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
Java就業(yè)班
有基礎(chǔ) 直達(dá)就業(yè)
Java夜校直播班
業(yè)余時(shí)間 高薪轉(zhuǎn)行
Java在職加薪班
工作1~3年,加薪神器
Java架構(gòu)師班
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)