String有compareTo有方法用来比较字符串.

解决方案 »

  1.   

    如果是ipv6地址的话,你可以先这样处理
    String ip1=..
    String ip2=..
    String[] ip1s=ip1.split(":");
    String[] ip2s=ip2.split(":");
    印象中ipv6地址是8部分,利用冒号隔开的,这样先把8个部分放到数组里.
    然后循环处理,利用Integer.parseInt(ip1s[i],16);将字符串换算成对应的整数,然后对应比较就可以了。
    算法实现应该不难。
      

  2.   

    ip地址都是数字,这个比较好判断,转换成int即可,例子如下
    public class Test {
    public static void main(String[] args) {
    String str1 = "11.22.333.1";
    String str1s[] = str1.split("\\.");
    String str2 = "222.222.222.222";
    String str2s[] = str2.split("\\.");
    int result = 0;
    for(int i=0;i<str1s.length;i++){
    int temp1 = Integer.parseInt(str1s[i]);
    int temp2 = Integer.parseInt(str2s[i]);
    if(temp1==temp2)continue;
    else{
    result = (temp1<temp2?-1:1);
    break;
    }
    }
    System.out.println(result);
    }
    }
      

  3.   

    晕,ipv6地址是128位,用:分割的。而且里面是16进制数。
      

  4.   

    public class Test {
        public static void main(String[] args) {
            String str1 = "11.22.333.1";
            String str1s[] = str1.split("\\.");
            String str2 = "222.222.222.222";
            String str2s[] = str2.split("\\.");
            int result = 0;
            for(int i=0;i<str1s.length;i++){
                int temp1 = Integer.parseInt(str1s[i]);
                int temp2 = Integer.parseInt(str2s[i]);
                if(temp1==temp2)continue;
                else{
                    result = (temp1<temp2?-1:1);
                    break;
                }
            }
            System.out.println(result);
        }
    }这个例子的正确的,我给你验证了一下
    关键是用split截取,然后重新赋给个数组,就可以实现了
      

  5.   

    我写了一个,大体测试没有问题:
    public class Main {    public static void main(String[] args) {
            String str1 = "3ffe:3201:1401::c8ff:fe4d:db39:5";
            String str2 = "3ffe:3201:1401::c8ff:fe4d:db39:9";
            int result = compare(str1, str2);
            System.out.println(result);
        }
        /*
         * 输入:两个表示ipv6地址的字符串
         * 输出:1表示第一个地址大于第二个地址,0表示两个地址相同,-1表示小于
         */    public static int compare(String ip1, String ip2) {
            String[] ip1s = ip1.split(":");
            String[] ip2s = ip2.split(":");
            //循环比较对应的项
            for (int i = 0; i < ip1s.length; i++) {
                if (ip1s[i].equals("")) {
                    if (ip2s[i].equals("")) { //对应的项都位空,往下比较
                        continue;
                    } else {
                        return -1;
                    }
                } else {
                    if (ip2s[i].equals("")) {
                        return 1;
                    } else {   //确定对应的项不位空,讲字符串转换位整数进行比较
                        int value1 = Integer.parseInt(ip1s[i], 16);
                        int value2 = Integer.parseInt(ip2s[i], 16);
                        if (value1 > value2) {
                            return 1;
                        } else if (value1 < value2) {
                            return -1;
                        } else {
                            continue;
                        }
                    }
                }
            }
            //循环结束,表示两个串表示的地址相同
            return 0;
        }
    }
      

  6.   

    不可以直接比吗?应该可以吧!直接str1.equrs(str2)不行吗?
      

  7.   

    不可以。
    看看ipv6的地址格式你就明白了。
      

  8.   

    直接用str.equals(str1)就可以了
    返回的是true自然就相同,false反之
      

  9.   

    思路:
    split(“.”);
    顺序存入数组,然后逐个比较.思路2(推荐):
    使用分隔符表达式吧
    java.util.StringTokenizer.
      

  10.   

    .StringTokenizer已经不建议使用了.