(1)

判断两个IP是否属于同一子网

http://www.nowcoder.com/questionTerminal/34a597ee15eb4fa2b956f4c595f03218

掩码四段八位,前段大于等于后段。注意这个就行
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            String a=sc.next();
            String b=sc.next();
            String c=sc.next();
            String[] aa=a.split("\\.");
            String[] bb=b.split("\\.");
            String[] cc=c.split("\\.");
            int[] aaa=Arrays.stream(aa).mapToInt(Integer::parseInt).toArray();
            int[] bbb=Arrays.stream(bb).mapToInt(Integer::parseInt).toArray();
            int[] ccc=Arrays.stream(cc).mapToInt(Integer::parseInt).toArray();
            if(!isIp(bbb)||!isIp(ccc)||!isAd(aaa)){
                System.out.println(1);
                continue;
            }
            boolean flag=true;
            for(int i=0;i<4;i++){
               if((bbb[i]&aaa[i])!=(ccc[i]&aaa[i])){
                    System.out.println(2);
                    flag=false;
                    break;
                }
            }
            if(flag)
                System.out.println(0);


        }
        sc.close();
    }

    public static boolean isAd(int[] a){
        return a[0]>=0&&a[0]<=255&&
                a[1]>=0&&a[1]<=255&&
                a[2]>=0&&a[2]<=255&&
                a[3]>=0&&a[3]<=255&&
                a[0]>=a[1]&&
                a[1]>=a[2]&&
                a[2]>=a[3];
    }

    public static boolean isIp(int[] a){
        return a[0]>=0&&a[0]<=255&&
                a[1]>=0&&a[1]<=255&&
                a[2]>=0&&a[2]<=255&&
                a[3]>=0&&a[3]<=255;
    }

}



全部评论
这判断子网掩码的方式不对吧?像255.255.6.6就不是子网掩码吧。
点赞
送花
回复 分享
发布于 2021-06-17 20:27

相关推荐

4 收藏 评论
分享
牛客网
牛客企业服务