黑马程序员技术交流社区

标题: 麻烦朋友看一下这个切割字符串和定义比较器的问题 [打印本页]

作者: softzhang    时间: 2015-8-5 20:20
标题: 麻烦朋友看一下这个切割字符串和定义比较器的问题
本帖最后由 softzhang 于 2015-8-5 20:24 编辑
  1. import java.util.*;
  2. import java.io.*;
  3. class Mycomprare implements Comparator<String>
  4. {<font style="font-size: 14px">        </font>
  5.         public int compare(String s1,String s2)
  6.         {
  7.                  s1=s1.replace('.',',');
  8.                  s2=s2.replace('.',',');
  9.                 String[] arr1=s1.split(",");
  10.                 String[] arr2=s2.split(",");
  11.                 int num=0;
  12.                 for(int i=0;i<arr1.length;i++)
  13.                 {
  14.                         num =Integer.parseInt(arr1<i>)-Integer.parseInt(arr2<i>);
  15.                         if(num!=0)
  16.                         return num;
  17.                 }
  18.         return num;
  19.         }
  20. }
  21. class  test8
  22. {
  23.         public static void main(String[] args)  throws IOException
  24.         {
  25.                 TreeSet<String> str=new TreeSet<String>(new Mycomprare());
  26.                 str.add("61.54.231.245");
  27.                 str.add("61.54.231.9");
  28.                 str.add("61.54.231.48");
  29.                 str.add("61.53.231.249");

  30.                 BufferedWriter bufw=
  31.                         new BufferedWriter(new FileWriter("e:\\ip.txt"));
  32.                 BufferedReader bufr=
  33.                         new BufferedReader(new FileReader("e:\\ip.txt"));

  34.                 for(Iterator<String> it=str.iterator();it.hasNext();)
  35.                 {
  36.                         String p=it.next();
  37.                         System.out.println(p);
  38.                         bufw.write(p);
  39.                         bufw.newLine();
  40.                         bufw.flush();
  41.                 }
  42.         }
  43. }
复制代码


上面这个代码是OK的
编译如下:



但是下面这样就会出问题




为什么”.“就不能切割,转换成”,“再用”,“切割才可以呢?
其他地方都没有做修改,试了好多次还是不行
而且用”,“切割后编译运行不会报错
但是再for循环外面打印;System.out.println(arr1[0]);
运行就会报数组角标越界。







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