首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 2道头疼的题目,请赐教. ~ [无满意答案结贴,结贴人:Lie_li]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-15 14:09:19 楼主
    我是java初学者,最近参加工作,头头丢下2个问题。。。比较头疼。。。。。特来求助。。

    1.读取一个文本 内容如下
    444  444.f
    442  assd22
    444  444

    要求:计算每行2边数值的合


    2.读去HTML文件,统计其中有多少个LINK或是多少个HTTP地址


    关于第1题,我写的如下:(由于分主外机,代码都是手打,可能有误)
    public static boolean isInteger(String value) { 
    try { 
    Integer.parseInt(value); 
    return true; 
    } catch (NumberFormatException e) { 
    return false; 



    /** 
    * 判断字符串是否是浮点数 
    */ 
    public static boolean isDouble(String value) { 
    try { 
    Double.parseDouble(value); 
    if (value.contains(".")) 
    return true; 
    return false; 
    } catch (NumberFormatException e) { 
    return false; 



    /** 
    * 判断字符串是否是数字 
    */ 
    public static boolean isNumber(String value) { 
    return isInteger(value)  ¦ ¦ isDouble(value); 



    public static void main(Sting[]args)
    {
      File f=new File("e:\\11.txt");
      FileReader fr=new FileReader(f);
      BuffereReader bf=new BuffereReader (fr);
       
     
      Double dsum=0d;
      int isum=0;
      String readLine="";
      String [] myArray=new String[(int)f.length];
       
      while((readLine=bf.readLine())!=null)
      {
        myArray=readLine.split("\\s+");
        for(int i=0;i <myArray.lenth;++i)
        {
            if(isNumber(myArray[i].toString)==true  ¦ ¦ isDouble(myArray[i].toString)==true)
            {
                dsum += Double.parseDouble(myArray[i]);
              }
        }

    }


    遇到的问题有下面几个:
    1.按这样的代码,计算出来的记过是该文本中所有数值型的总合;
    2.本想判断2边数值如果都是INT则用isum变量统计,有一边是Double则用dsum来统计,但是用isum统计的时候数据有问题,所以在这里没有打出来.
    3.有没有更简洁的方法达到该题的目的.


    书上说遇到难题自己先尝试查找资料去解决,1天下来没解决的再去找别人帮忙.

    已经折腾2天了.....


    看了那么多,麻烦了~
    100  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-15 22:24:421楼 得分:0
    1 在for 循环开始,给 dsum =0, 在循环结束处打印,就是一行的数据之和了

    2 你的 inNumber 包含了 isDouble ,所以没必要判断2次

    3 如果不确定是Integer还是 Double, 那就用 double

    4 你的算法没问题,只能这样做了


    5 2.读去HTML文件,统计其中有多少个LINK或是多少个HTTP地址 

    有个简单的方法,那就是 str.split("LINK"); 然后数量就是 数组长度-1

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-15 23:40:262楼 得分:0
    向一楼学习了!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-16 09:35:543楼 得分:0
    回专家。


    1.在for 循环开始,给 dsum =0
    这样一来每次都清0,结果只是把每个数字都打印一遍

    2.如果不确定是Integer还是 Double, 那就用 double
    是我没说清楚,如果文本里每行左右任何一边是4f,那么输出也需要带有f。
    我自己写死的代码中可以解决这个问题,但在活代码中,这点比较头疼。

    3.左右任何一边不是数字就不操作或输出点别的什么,但我这样的代码,则会把数值的一边和经过判断不是数值输出的东西一起输出。

    5.str.split("LINK");
    截取的话,那不是就等于把他删了,那还怎么获得呢?
    还有这题目我自己也比较迷糊的地方是 <link/> 还是class="blackLink"
    还有还是指hr="http://~~~~~~~~~~"这样的连接
    我在别初发的贴中,有人说到用正则表达式


    希望能有代码表示,麻烦了。
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved