Java中信筆試題,自己做一下試試看

Java中信筆試題,自己做一下試試看

長沙一度軟件培訓(xùn)      2022-04-06 22:14:02     9

Java中信筆試題,自己做一下試試看,1.判斷身份證:要么是15位,要么是18位,最后一位可以為字母,并寫程序提出其中的年月日。答:我們可以用正則表達(dá)式來定義復(fù)雜的

課程價(jià)格 請咨詢

上課時(shí)段: 授課校區(qū):

詳細(xì)介紹

1.判斷身份證:要么是15位,要么是18位,最后一位可以為字母,并寫程序提出其中的年月日。

答:我們可以用正則表達(dá)式來定義復(fù)雜的字符串格式,(d{17}[0-9a-zA-Z]|d{14}[0-9a-zA-Z])可以用來判斷是否為合法的15位或18位身份證號碼。

因?yàn)?5位和18位的身份證號碼都是從7位到第12位為身份證為日期類型。這樣我們可以設(shè)計(jì)出更精確的正則模式,使身份證號的日期合法,這樣我們的正則模式可以進(jìn)一步將日期部分的正則修改為[12][0-9]{3}[01][0-9][123][0-9],當(dāng)然可以更精確的設(shè)置日期。

在jdk的java.util.Regex包中有實(shí)現(xiàn)正則的類,Pattern和Matcher。以下是實(shí)現(xiàn)代碼:

import java.util.regex.Matcher;import java.util.regex.Pattern;public class RegexTest{public static void main(String[]args){//測試是否為合法的身份證號碼String[]strs={"130681198712092019","13068119871209201x","13068119871209201","123456789012345","12345678901234x","1234567890123"};Pattern p1=Pattern.compile("(d{17}[0-9a-zA-Z]|d{14}[0-9a-zA-Z])");for(int i=0;i&lt;strs.length;i++){Matcher matcher=p1.matcher(strs<i>);System.out.println(strs<i>+":"+matcher.matches());}Pattern p2=Pattern.compile("d{6}(d{8}).*");//用于提取出生日字符串Pattern p3=Pattern.compile("(d{4})(d{2})(d{2})");//用于將生日字符串進(jìn)行分解為年月日for(int i=0;i&lt;strs.length;i++){Matcher matcher=p2.matcher(strs<i>);boolean b=matcher.find();if(b){String s=matcher.group(1);Matcher matcher2=p3.matcher(s);if(matcher2.find()){System.out.println("生日為"+matcher2.group(1)+"年"+matcher2.group(2)+"月"+matcher2.group(3)+"日");}}}}}

2.編寫一個(gè)程序,將a.txt文件中的單詞與b.txt文件中的單詞交替合并到c.txt文件中,a.txt文件中的單詞用回車符分隔,b.txt文件中用回車或空格進(jìn)行分隔。

答:

package cn.itcast;import java.io.File;import java.io.FileReader;import java.io.FileWriter;public class MainClass{public static void main(String[]args)throws Exception{FileManager a=new FileManager("a.txt",new char[]{'n'});FileManager b=new FileManager("b.txt",new char[]{'n',''});FileWriter c=new FileWriter("c.txt");String aWord=null;String bWord=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();}}class FileManager{String[]words=null;int pos=0;public FileManager(String filename,char[]seperators)throws Exception{File f=new File(filename);FileReader reader=new FileReader(f);char[]buf=new char[(int)f.length()];int len=reader.read(buf);String results=new String(buf,0,len);String regex=null;if(seperators.length&gt;1){regex=""+seperators[0]+"|"+seperators[1];}else{regex=""+seperators[0];}words=results.split(regex);}public String nextWord(){if(pos==words.length)return null;return words[pos++];}}

3.編寫一個(gè)程序,將d:java目錄下的所有.java文件復(fù)制到d:jad目錄下,并將原來文件的擴(kuò)展名從.java改為.jad。

答:listFiles方法接受一個(gè)FileFilter對象,這個(gè)FileFilter對象就是過慮的策略對象,不同的人提供不同的FileFilter實(shí)現(xiàn),即提供了不同的過濾策略。

import java.io.Fileimport java.io.FileInputStream;import java.io.FileOutputStream;import java.io.FilenameFilter;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;public class Jad2Java{public static void main(String[]args)throws Exception{File srcDir=new File("java");if(!(srcDir.exists()&&srcDir.isDirectory()))throw new Exception("目錄不存在");File[]files=srcDir.listFiles(new FilenameFilter(){public boolean accept(File dir,String name){return name.endsWith(".java");}});System.out.println(files.length);File destDir=new File("jad");if(!destDir.exists())destDir.mkdir();for(File f:files){FileInputStream fis=new FileInputStream(f);String destFileName=f.getName().replaceAll(".java$",".jad");FileOutputStream fos=new FileOutputStream(new File(destDir,destFileName));copy(fis,fos);fis.close();fos.close();}}private static void copy(InputStream ips,OutputStream ops)throws Exception{int len=0;byte[]buf=new byte[1024];while((len=ips.read(buf))!=-1){ops.write(buf,0,len);}}}

由本題總結(jié)的思想及策略模式的解析:

(1)class jad2java{ ,得到某個(gè)目錄下的所有的java文件集合

①得到目錄File srcDir=new File("d:java");

②得到目錄下的所有java文件:File[]files=srcDir.listFiles(new MyFileFilter());

③只想得到.java的文件:class MyFileFilter implememyts FileFilter{

public boolean accept(File pathname){return pathname.getName().endsWith(".java")}}

(2)將每個(gè)文件復(fù)制到另外一個(gè)目錄,并改擴(kuò)展名

①得到目標(biāo)目錄,如果目標(biāo)目錄不存在,則創(chuàng)建之

②根據(jù)源文件名得到目標(biāo)文件名,注意要用正則表達(dá)式,注意.的轉(zhuǎn)義。

③根據(jù)表示目錄的File和目標(biāo)文件名的字符串,得到表示目標(biāo)文件的File。

  • //要在硬盤中準(zhǔn)確地創(chuàng)建出一個(gè)文件,需要知道文件名和文件的目錄。

④將源文件的流拷貝成目標(biāo)文件流,拷貝方法獨(dú)立成為一個(gè)方法,方法的參數(shù)采用抽象流的形式。

  • //方法接受的參數(shù)類型盡量面向父類,越抽象越好,這樣適應(yīng)面更寬廣。
  • }

分析listFiles方法內(nèi)部的策略模式實(shí)現(xiàn)原理

File[]listFiles(FileFilter filter){File[]files=listFiles();//Arraylist acceptedFilesList=new ArrayList();File[]acceptedFiles=new File[files.length];int pos=0;for(File file:files){boolean accepted=filter.accept(file);if(accepted){//acceptedFilesList.add(file);acceptedFiles[pos++]=file;}}Arrays.copyOf(acceptedFiles,pos);//return(File[])accpetedFilesList.toArray();}

以上就是長沙一度軟件培訓(xùn)java培訓(xùn)機(jī)構(gòu)的小編針對“Java中信筆試題,自己做一下試試看”的內(nèi)容進(jìn)行的回答,希望對大家有所幫助,如有疑問,請?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。

Java筆試題

培訓(xùn)啦提醒您:交易時(shí)請核實(shí)對方資質(zhì),對于過大宣傳或承諾需謹(jǐn)慎!任何要求預(yù)付定金、匯款等方式均存在風(fēng)險(xiǎn),謹(jǐn)防上當(dāng)。