黑马程序员技术交流社区

标题: 编写程序把这些IP按数值大小,从小到大排序并打印出来 [打印本页]

作者: MoonsenHung    时间: 2015-8-26 23:55
标题: 编写程序把这些IP按数值大小,从小到大排序并打印出来
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;

/**
*
* 把以下IP存入一个txt文件,编写程序把这些IP按数值大小,从小到大排序并打印出来。

        61.54.231.245
        61.54.231.9
        61.54.231.246
        61.54.231.48
        61.53.231.249
*
*
*
*
* @author perry
*
*/
public class Test8 {
        public static void main(String[] args) throws IOException {
                //创建录入流,把数据录入到指定文档
                BufferedWriter bw = new BufferedWriter(new FileWriter("ip.txt"));
                bw.write("61.54.231.245");
                bw.newLine();
                bw.write("61.53.231.249");
                bw.newLine();
                bw.write("61.54.231.246");
                bw.newLine();
                bw.write("61.54.231.48");
                bw.newLine();
                bw.write("61.54.231.9");
                bw.flush();
                bw.close();
               
       
                //读取文档数据,添加到数组中去
                BufferedReader br = new BufferedReader(new FileReader("ip.txt"));
       
                ArrayList<String> al = new ArrayList<String>();
                String line = null;
               
        while ((line=br.readLine())!=null) {
                al.add(line);
        }
                br.close();
                //冒泡法,对数进行排序
                for (int i = 0; i < al.size()-1; i++) {
                        for (int j = 0; j < al.size()-i-1; j++) {
                               
                                //调用数值判断函数getsum,对数值的大小进行判断。
                                if (getSum(al.get(j))>getSum(al.get(j+1))) {
                               
                                        String str = al.get(j);
                                        al.set(j, al.get(j+1));
                                        al.set(j+1, str);
                                       
                                       
                                }
                        }
                }
                //增强for打印输出
                for (String a : al) {
                        System.out.println(a);
                }
       
       
        }
       
        //getSum 函数,获取ip值的实际数值大小,并且返回。
        public static int getSum(String s){
                String[] p = s.split("\\.");
                int sum = 0;
                for (int i = 0; i < p.length; i++) {
                        sum = sum*256+Integer.parseInt(p[i]);
                }
                return sum;
               
               
        }
       
       
       
}
作者: aguang    时间: 2015-8-27 09:25
楼主很认真,加油!
作者: 林以    时间: 2016-1-11 20:32
学习了  哈哈
作者: wuxueshuan    时间: 2016-1-11 21:47
还没学到这里,先看看
作者: yehua1026    时间: 2016-1-11 21:52
66666666666666
作者: 936994215    时间: 2016-6-14 13:15
可以的!!




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