更新時(shí)間:2020-03-19 10:31:59 來源:動力節(jié)點(diǎn) 瀏覽2359次
編寫一個(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對象,這個(gè)FileFilter對象就是過慮的策略對象,不同的人提供不同的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歲,依次遞推,請用遞歸方式計(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); }
以上就是動力節(jié)點(diǎn)Java培訓(xùn)機(jī)構(gòu)小編介紹的“三道Java遞歸算法筆試題”的內(nèi)容,希望對大家有幫助,如有疑問,請?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。
相關(guān)閱讀
初級 202925
初級 203221
初級 202629
初級 203743