专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 三道Java递归算法笔试题

三道Java递归算法笔试题

更新时间:2020-03-19 10:31:59 来源:动力节点 浏览1890次


  编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。

  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++];

  }

  }


  编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad。


  listFiles方法接受一个FileFilter对象,这个FileFilter对象就是过虑的策略对象,不同的人提供不同的FileFilter实现,即提供了不同的过滤策略。

  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);

  }

  }

  }


  编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉的半个”

  首先要了解中文字符有多种编码及各种编码的特征。

  假设n为要截取的字节数。

  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个人10,第2个比第1个人大2岁,依次递推,请用递归方式计算出第8个人多大?


  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);

  }


    以上就是动力节点Java培训机构小编介绍的“三道Java递归算法笔试题”的内容,希望对大家有帮助,如有疑问,请在线咨询,有专业老师随时为你服务。


提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>