朋友发给我的一个某公司的面试题:
用JAVA写一个WEB程序,可以输入一个URL地址(如:http://www.haodew.com/index.html)和一个关键词(如:电子商务)之后,
点击确定按钮提交,程序返回如下结果:1、  该关键字在该页面中出现的次数(指在浏览器窗口上能看到的,其他的不算);2、  找到在该页面中出现该关键词的倒数第二句话,并将这句话显示出来(提示:html页面的换行是<br />)。
我想说,作为从事一个需要严谨思维行业的人,出的题能否严谨点呢?!

解决方案 »

  1.   


    public class Test {
        public static void main(String args[]) throws IOException{
             URL url = new URL("http://www.sina.com");
            InputStream is = url.openStream();
            BufferedReader br = new BufferedReader(new InputStreamReader(is,"gbk"));
            String r;
            StringBuffer sb = new StringBuffer("");
            while((r=br.readLine())!=null){
                sb.append(r+"\n");
            }
            String tag = "javascript";
            
            int total = 0;
            int m = sb.indexOf(tag);
            while(m!=-1){
                total++;
                m = sb.indexOf(tag,m+tag.length());
            }
            System.out.println(total);
            
            int a = sb.lastIndexOf(tag,sb.length()-1);
            a= sb.lastIndexOf(tag,a-1);
            int b=sb.lastIndexOf("\n",a);
            int e=sb.indexOf("\n",a);
            System.out.println(sb.substring(b+1,e));
            
        }
    }分别输出"javascript" 在页面中出现的次数, 以及倒数第二个javascript所在的那一行字符串
    写的比较潦草
      

  2.   

    呵呵,其实主要是想讨论下这个题目。1、  该关键字在该页面中出现的次数(指在浏览器窗口上能看到的,其他的不算);首先看这个,java我不太懂,不知道有没有方法只获得一个url页面上的文字,而不包含html标记。
    如果有的话,那就简单了。
    如果没有,获得的是整个页面的html,那么,css可以控制文字不显示,js也可以控制文字不显示。那就需要分析没有关键词对应的css,js了。2、  找到在该页面中出现该关键词的倒数第二句话,并将这句话显示出来(提示:html页面的换行是<br />)。
    关键词可以出现多次,也就是“倒数第二句” 也有多句了。而且这个提示是什么意思呢? 告诉我们每一个<br>换行才算一句?
       
      

  3.   

    1,css控制某个文字不显示的话,这个字就不会出现在页面上,是读不出来的。
    2,比如有十句话出现了关键字,打印出第9句。就是这个意思吧。
       换行是说 一句话不是根据"。"来分隔的。    比如关键字是"h",有一串字符串"ahh</br>hhb。",这就算两句话。
    我觉得你理解偏了
      

  4.   

    我认为这个题目不是很严谨,解析HTML有很多需要严格定义的,<p><li><br>还有CSS里的float方向,都能导致页面上的分行显示,这个题目有很多地方的需求是需要严格讨论才能处理的,就这样出个题目给面试的人做,太刁钻
      

  5.   

    jsoup.jar工具包Element类中有N多方法,有一个是可以只获取页面中的文字