A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. class Test6
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 String str="61.54.231.245  61.54.231.9  61.54.231.246  61.54.231.48 61.53.231.249";
  6.                 BufferedWriter bufw=null;
  7.                 try
  8.                 {
  9.                         bufw= new BufferedWriter(new FileWriter("d:\\ip.txt"));
  10.                         str=str.replaceAll("(\\d+)", "00$1");
  11.                         str=str.replace("0*(\\d{3})", "$1");
  12.                         String[] arr=str.split(" +");
  13.                         TreeSet<String> ts=new TreeSet<String>();
  14.                         for(String s :arr)
  15.                         {
  16.                                 ts.add(s);
  17.                         }
  18.                         for(String ss : ts)
  19.                         {
  20.                                 bufw.write(ss.replaceAll("0*(\\d+)", "$1"));
  21.                                 bufw.newLine();
  22.                                 bufw.flush();
  23.                         }
  24.                        
  25.                 }
  26.                 catch(Exception e)
  27.                 {
  28.                         throw new RuntimeException("故障");
  29.                 }
  30.                 finally
  31.                 {
  32.                         if(bufw!=null)
  33.                         {
  34.                                 try
  35.                                 {
  36.                                         bufw.close();
  37.                                 }
  38.                                 catch(Exception e)
  39.                                 {
  40.                                         throw new RuntimeException("关闭流失败");
  41.                                 }
  42.                         }
  43.                 }
  44.         }
  45. }
复制代码
题目:把以下IP存入一个txt文件,编写程序把这些IP按数值大小,从小到达排序并打印出来。
61.54.231.245
61.54.231.9
61.54.231.246
61.54.231.48
61.53.231.249

为什么打印的结果时这样的??我这样写有错吗?想不明白;




7 个回复

倒序浏览
  1. 第11行代码  改为  str=str.replaceAll("0*(\\d{3})", "$1");
复制代码
回复 使用道具 举报
飘过,表示看不懂,继续学习!
回复 使用道具 举报

太感谢,原来是我自己用eclipse的时候小写了个All,怪不得我想爆头都想不明白,自己觉得这样写没错的,但是打印出来的结果就怪怪的,哎,自己太粗心了!非常感谢。
回复 使用道具 举报
还没学到IO和正则......
回复 使用道具 举报
这种问题可以自己解决的,教你个方法,既然输出有问题,就注释掉部分代码,然后假如结果跟你逻辑上的一样,错误的地方就在你注释掉的部分,一点点就推出来了
回复 使用道具 举报
需要细心啊,楼主!
回复 使用道具 举报
fmi110 高级黑马 2015-9-25 12:34:08
8#
Komi 发表于 2015-9-25 10:30
太感谢,原来是我自己用eclipse的时候小写了个All,怪不得我想爆头都想不明白,自己觉得这样写 ...

这种差错 你可以在有对源数据进行处理的地方 添加system.out语句输出到控制台,看是在哪里输出的数据不对
找错的地方的    在11行后面将字符串输出到屏幕 就能看到数据不是想要的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马