【华为机试041】判断两个IP是否属于同一子网

题目描述:

子网掩码是用来判断任意两台计算机的IP地址是否属于同一子网络的根据。
子网掩码与IP地址结构相同,是32位二进制数,其中网络号部分全为“1”和主机号部分全为“0”。利用子网掩码可以判断两台主机是否中同一子网中。若两台主机的IP地址分别与它们的子网掩码相“与”后的结果相同,则说明这两台主机在同一子网中。

Java实现:

import java.util.*;
public class Main{
    public static void main(String arg[]){
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
            String[] mask=sc.next().split("\\.");
            String[] ip1=sc.next().split("\\.");
            String[] ip2=sc.next().split("\\.");

            if(!(check(mask)&&check(ip1)&&check(ip2))==true){
                System.out.println(1);
                return;
            }
            boolean flag=false;
            for(int i=0;iInteger.parseInt(address[i])||Integer.parseInt(address[i])>255)
                return false;
        }
        return true;
    }
}

知识点:

  • 这里判断子网掩码和IP地址合法与否仅判断是否在0~255之间,而没有判断子网掩码需要1都在前面
  • 将子网掩码和IP地址分为四段整数,依次按位&,看是否相等,只要有一段不相等,都不在同一子网内

你可能感兴趣的:(华为机试题集Java实现)