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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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;
               
               
        }
       
       
       
}

5 个回复

倒序浏览
楼主很认真,加油!
回复 使用道具 举报
学习了  哈哈
回复 使用道具 举报
还没学到这里,先看看
回复 使用道具 举报
66666666666666
回复 使用道具 举报
可以的!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马