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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


  1. import java.io.BufferedWriter;
  2. import java.io.FileWriter;
  3. import java.io.IOException;
  4. import java.util.Arrays;

  5. /**
  6. * 3. 把以下IP存入一个txt文件,编写程序把这些IP按数值大小,从小到达排序并打印出来
  7. *    61.54.231.245
  8. *    61.54.231.9
  9. *    61.54.231.246
  10. *    61.54.231.48
  11. *    61.53.231.249
  12. */
  13. public class IpSort {
  14.         String[] str1;
  15.         public static void main(String[] args) {
  16.                 // 创建类对象
  17.                 IpSortTest ipst = new IpSortTest();
  18.                 // 调用类方法
  19.                 ipst.IpSortDemo();
  20.                 ipst.writerDemo();
  21.         }
  22. }
  23. class IpSortTest {
  24.         // 将IP写入IP.txt文件
  25.         String str = "61.54.231.245 61.54.231.9 61.54.231.246 61.54.231.48 61.53.231.249";

  26.         public void IpSortDemo() {
  27.                 // 声明StringBuffer容器
  28.                 StringBuffer sb = new StringBuffer();
  29.                 // 将由IP地址组成的字符串加上空格标记存入到str中
  30.                 String s4 = null;
  31.                 // 根据空格分割字符串
  32.                 String[] s = str.split(" ");
  33.                 // 遍历字符串数组
  34.                 for (String string : s) {
  35.                         String s1 = string;
  36.                         String s2;
  37.                         // 切割每个IP最后一个点后的字符
  38.                         s2 = s1.substring(s1.lastIndexOf(".") + 1);
  39.                         // System.out.println(s1);
  40.                         // 切割每个IP最后一个之前的字符
  41.                         String s3 = s1.substring(0, s1.lastIndexOf(".") - 1);
  42.                         // System.out.println(s3);
  43.                         // 判断切割出来的字符串,在其前补零
  44.                         if (s2.length() == 2) {
  45.                                 s2 = "0" + s2;
  46.                                 // System.out.println(s1);
  47.                         } else if (s2.length() == 1) {
  48.                                 s2 = "00" + s2;
  49.                                 // System.out.println(s1);
  50.                         }
  51.                         // 将字符串前后拼接起来
  52.                         s4 = s3 + "." + s2;
  53.                         // System.out.println(s4);
  54.                         // 用StringBuffer将拼接后的字符串接收
  55.                         sb.append(s4 + " ");
  56.                         // System.out.println(str1);
  57.                 }
  58.                 // 切割sb并加入数组
  59.                 String[] str1 = sb.toString().split(" ");
  60.                 // 排序
  61.                 Arrays.sort(str1);
  62.                 for (String str2 : str1) {
  63.                         // 用空字符替换IP中所有零
  64.                         String str3 = str2.replace("0", "");
  65.                         System.out.println(str3);
  66.                 }
  67.         }

  68.         public void writerDemo() {
  69.                 // 创建字符流对象
  70.                 // FileWriter fw = null;
  71.                 BufferedWriter bw = null;
  72.                 try {
  73.                         FileWriter fw = new FileWriter("d:\\IP.txt");
  74.                         // 将需要提高效率的流对象作为参数传递给缓冲区
  75.                         bw = new BufferedWriter(fw);
  76.                         bw.write(str);
  77.                         // 刷新
  78.                         bw.flush();
  79.                 } catch (Exception e) {
  80.                         e.printStackTrace();
  81.                 } finally {
  82.                         try {
  83.                                 bw.close();
  84.                         } catch (IOException e) {
  85.                                 e.printStackTrace();
  86.                         }
  87.                 }
  88.         }
  89. }
复制代码

11 个回复

倒序浏览
richaled 发表于 2015-5-18 08:02
这个用正则很快的

正则我还没学会,所以就用了,自己知道的一些知识来完成:)
回复 使用道具 举报
KK要有光 发表于 2015-5-18 09:33
这是我用正则表达式写的,可以看看。

哎,感觉正则表达式省了不少事呀,我的太繁琐了,受教了
回复 使用道具 举报
王建伟 发表于 2015-5-18 09:48
建议楼主学习正则,毕老师视频里面就有。
另外在分析了一下楼主的代码给楼主一些建议,你的这段代码

我的小程序正如你所说,存在很大的局限性,只能用在这道题上,你分析的很透彻呀,后面一定要学学正则!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马