黑马程序员技术交流社区

标题: 求大神指点,为什么我输出的排序这么奇怪的? [打印本页]

作者: Komi    时间: 2015-9-25 01:37
标题: 求大神指点,为什么我输出的排序这么奇怪的?
  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

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





作者: fmi110    时间: 2015-9-25 07:34
  1. 第11行代码  改为  str=str.replaceAll("0*(\\d{3})", "$1");
复制代码

作者: 18190787091    时间: 2015-9-25 08:03
飘过,表示看不懂,继续学习!
作者: Komi    时间: 2015-9-25 10:30
fmi110 发表于 2015-9-25 07:34

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

这种差错 你可以在有对源数据进行处理的地方 添加system.out语句输出到控制台,看是在哪里输出的数据不对
找错的地方的    在11行后面将字符串输出到屏幕 就能看到数据不是想要的




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