题解 | #判断两个IP是否属于同一子网#
判断两个IP是否属于同一子网
https://www.nowcoder.com/practice/34a597ee15eb4fa2b956f4c595f03218
import java.util.Scanner;
// 把题干的要求读完,判1的条件有两个,都要写出来,
// 本题解使用sign符号作为后续是否进行比较的判断
// 因为掩码需要判断前后关系,所以使用数组存储
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextLine()) {
String mask = in.nextLine();
if (mask == null || mask == "") break;
String ipFir = in.nextLine();
String ipSec = in.nextLine();
String[] maskNum = mask.split("\\.");
String[] ipFirNum = ipFir.split("\\.");
String[] ipSecNum = ipSec.split("\\.");
int sign = 0;
Long[] curNum = new Long[maskNum.length];
Long[] curNum2 = new Long[maskNum.length];
Long[] curNum3 = new Long[maskNum.length];
for (int i = 0; i < maskNum.length; i++) {
curNum[i] = Long.parseLong(maskNum[i]);
curNum2[i] = Long.parseLong(ipFirNum[i]);
curNum3[i] = Long.parseLong(ipSecNum[i]);
if (curNum[i] > 255 || curNum[i] < 0 || curNum2[i] > 255 || curNum2[i] < 0 || curNum3[i] > 255 || curNum3[i] < 0) {
System.out.println(1);
sign = 1;
break;
}
if (i - 1 >= 0 && (curNum[i - 1] != 255 && curNum[i] != 0)) {
System.out.println(1);
sign = 1;
break;
}
}
if (sign == 0) {
for (int i = 0; i < maskNum.length; i++) {
if ((curNum[i] & curNum2[i]) != (curNum[i] & curNum3[i])) {
System.out.println(2);
break;
} else if (i == maskNum.length - 1) {
System.out.println(0);
}
}
}
}
}
}
传音控股晋升空间 52人发布

