黑马程序员技术交流社区

标题: 面试难点解析3 [打印本页]

作者: 残月    时间: 2015-10-21 22:25
标题: 面试难点解析3
1.自定义字符输入流的包装类,通过这个包装类对底层字符输入流进行包装,让程序通过这个包装类读取某个文本文件(例如,一个java源文件)时,能够在读取的每行前面都加上有行号和冒号。
2.已知一个类,定义如下:
package cn.itcast.heima;
     public class DemoClass {
       public void run()
      {
         System.out.println("welcome to heima!");
      }   
     }
(1) 写一个Properties格式的配置文件,配置类的完整名称。
(2) 写一个程序,读取这个Properties配置文件,获得类的完整名称并加载这个类,用反射 的方式运行run方法。

3.已知文件a.txt文件中的内容为“bcdeadferwplkou”,请编写程序读取该文件内容,并按照自然顺序排序后输出到b.txt文件中。即b.txt中的文件内容应为“abcd…………..”这样的顺序。
作者: 残月    时间: 2015-10-21 22:27
第一题:
/**
* 7、 自定义字符输入流的包装类,通过这个包装类对底层字符输入流进行包装,
* 让程序通过这个包装类读取某个文本文件(例如,一个java源文件)时,能够在读取的每行前面都加上有行号和冒号。
*
* @author Administrator
*/
public class Test7 {
        public static void main(String[] args) throws Exception {
                MyLineNumberReader mlnr = new MyLineNumberReader(new FileReader(
                                "my.java"));

                String line = null;
                while ((line = mlnr.readLine()) != null) {
                        System.out.println(mlnr.getLineNumber() + ":" + line);
                }

                mlnr.close();
        }
}
//下面是自定义的字符输入流的包装类
public class MyLineNumberReader {
        private Reader r;
        private int lineNumber = 0;

        public MyLineNumberReader(Reader r) {
                this.r = r;
        }

        public int getLineNumber() {
                // lineNumber++;
                return lineNumber;
        }

        public void setLineNumber(int lineNumber) {
                this.lineNumber = lineNumber;
        }

        public String readLine() throws IOException {
                lineNumber++;
                StringBuilder sb = new StringBuilder();
                int ch = 0;
                while ((ch = r.read()) != -1) {
                        if (ch == '\r') {
                                continue;
                        }
                        if (ch == '\n') {
                                return sb.toString();
                        } else {
                                sb.append((char) ch);
                        }
                }
                if (sb.length() > 0) {
                        return sb.toString();
                }
                return null;
        }

        public void close() throws IOException {
                this.r.close();
        }
}

作者: 残月    时间: 2015-10-21 22:32
第二题:
先在package cn.itcast.heima包中定义一个类把代码复制进去:
package cn.itcast.heima;
public class DemoClass {
        public void run() {
                System.out.println("welcome to heima!");
        }
}
然后在项目里创建一个文件名为class.properties的文件,内容如下:
key=cn.itcast.heima.DemoClass

然后第二小题:
public class Test6 {
        public static void main(String[] args) throws Exception {
                //创建一个Properties对象
                Properties prop = new Properties();
                prop.load(new FileReader("class.properties"));
                //通过key获取值(类的完整名称)
                String className = prop.getProperty("key");
                // 获取字节码文件对象
                Class c = Class.forName(className);
                //获取run方法并运行
                Method m = c.getMethod("run");
                m.invoke(c.newInstance());
        }
}

作者: heima117    时间: 2015-10-21 22:35
有用啊,O(∩_∩)O谢谢
作者: 残月    时间: 2015-10-21 22:35
第三题:
/**
* 5、 已知文件a.txt文件中的内容为“bcdeadferwplkou”,请编写程序读取该文件内容,
* 并按照自然顺序排序后输出到b.txt文件中。即b.txt中的文件内容应为“abcd…………..”这样的顺序。
*
* @author Administrator
*
*/
public class Test5 {
        public static void main(String[] args) throws IOException {
                // 通过高效字符流读取a.txt里面的内容
                BufferedReader reader = new BufferedReader(new FileReader("a.txt"));
                String line = reader.readLine();
                reader.close();
               
                // 把a.txt文件中的字符串转换成字符数组,然后进行排序
                char[] chs = line.toCharArray();
                Arrays.sort(chs);
               
                // 把排序过的字符数组转换成字符串,写入b.txt
                PrintWriter writer = new PrintWriter(new FileWriter("b.txt"));
                writer.println(new String(chs));
                writer.close();
        }
}

作者: 小胖    时间: 2015-10-22 14:26
感谢分享!
作者: 三川草民    时间: 2015-10-22 14:54
还好,谢谢
作者: xiexie758    时间: 2015-10-22 14:59
感谢分享,看起来面试不简单啊,有难度啊
作者: meihua    时间: 2015-10-22 16:42
留一个,说不定有用
作者: 我若为神    时间: 2015-10-22 21:26
看下,说不定以后有用
作者: 爨oooo    时间: 2015-10-22 21:38
面试老师问的吗
作者: 大地z灵    时间: 2015-10-22 23:09
都是干货啊,收藏了,
作者: 如梦丶似幻    时间: 2015-10-23 00:07
感谢分享~~~~~
作者: 迷途老马    时间: 2015-10-23 01:24
谢谢分享,很有用啊
作者: 范宗斌    时间: 2015-10-23 08:44
顶顶顶!
作者: 逝风    时间: 2015-10-23 10:21
感觉很厉害的样子
作者: 孤叶飘城    时间: 2015-10-23 10:46
收藏了!
作者: 达达达    时间: 2015-10-23 23:48
先收藏了
作者: heimacxy2015    时间: 2015-10-24 01:04
感觉很厉害的样子啊呵呵
作者: 雨来    时间: 2015-10-24 14:18
这些都是面试题吗?
作者: xiao_D    时间: 2015-10-24 17:13
谢谢谢谢谢
作者: yangshaoqiang    时间: 2015-10-24 19:01
怎么面试啊?网上面试的话,还有题的吗?不懂不懂,说说网上面试流程好吗




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2