`

面试答案

    博客分类:
  • java
阅读更多
  今天上午一个朋友发了一份试卷给我做,题目如下:
功能一:任意输入一个起始号码和一个截止号码,在一个TXT文件中产生所有的号码(可连续添加)。
例:输入起始号码20000,截止号码29999,则产生从20001到29999之间的所有1万个号码。
功能二:乱序。用一个算法(方式不限),使上述连续数字的顺序完全打乱,看不出任何规律。
功能三:排列。可以把文件中的号码按两种方式排列:
1)按逗号分隔。例:20001,20002,20003
2)按回车分隔。例:
20001
20002
20003
功能一答案:
public static void printStreamDemo(){
        try{
        	FileOutputStream out=new FileOutputStream("C:/test.txt");
            PrintStream p=new PrintStream(out);
            for(int i=20000;i<30000;i++)
                p.print(i+",");
        } catch (FileNotFoundException e){
            e.printStackTrace();
        }
    }




功能二答案:
public static  String bufferedReaderDemo() {
		StringBuffer buf = new StringBuffer(); 
		try {
			FileInputStream inputtextfile=new FileInputStream("c:/test.txt"); 
			BufferedInputStream buffer1=new BufferedInputStream(inputtextfile); 
			byte bufferArray[]=new byte[1024*1024]; 
			int n=0; 
			
			while((n=buffer1.read(bufferArray))!=-1) 
			{
				String temp=new String(bufferArray,0,n);
				buf.append(temp);
			} 
			buffer1.close(); 
			inputtextfile.close();
		}catch (IOException e){
            e.printStackTrace();
        }
		String[] arr = buf.toString().split(",");
              int i = arr.length;
			List list = new ArrayList();
			for(int j = 0;  j < i; j++) {
				list.add(arr[j]);
			}
			Collections.shuffle(list);
			for(int k = 0;  k < list.size(); k++) {
				System.out.println(list.get(k));//用输出流把list.get(k)写入文件中
			}
   
	}


功能三在功能一已经实现啦!
但是我觉得功能一没按他的要求做,理应写入文本格式是2000020001......299999,在这里就要判断输入数字的位数,希望。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics