题解 | #识别有效的IP地址和掩码并进行分类统计#
识别有效的IP地址和掩码并进行分类统计
https://www.nowcoder.com/practice/de538edd6f7e4bc3a5689723a7435682
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int numA = 0;
int numB = 0;
int numC = 0;
int numD = 0;
int numE = 0;
int numError = 0;
int numPrivateIp = 0;
while (in.hasNext()) {
String[] adress = in.nextLine().split("~");
String[] ip = adress[0].split("\\.");
String[] mask = adress[1].split("\\.");
int[] ipCode = new int[ip.length];
int[] maskCode = new int[mask.length];
boolean flag = true;
String maskBinary = "";
for (int i = 0; i < ip.length; i++) {
if (ip[i].isEmpty() || mask[i].isEmpty()) {
numError++;
flag = false;
break;
} else {
ipCode[i] = Integer.parseInt(ip[i]);
maskCode[i] = Integer.parseInt(mask[i]);
maskBinary = maskBinary + String.format("%8s",Integer.toBinaryString(maskCode[i])).replace(' ', '0');
}
}
if (flag) {
if (ipCode[0] == 0 || ipCode[0] == 127)continue;
if (ipCode.length != 4 && maskCode.length != 4) {
numError++;
continue;
}
if (!maskBinary.matches("[1]+[0]+")) {
numError++;
continue;
}
if (ipCode[0] > 0 && ipCode[0] < 127) {
numA++;
if (ipCode[0] == 10) {
numPrivateIp++;
}
} else if (ipCode[0] > 127 && ipCode[0] < 192) {
numB++;
if (ipCode[0] == 172 && ipCode[1] >= 16 && ipCode[1] <= 31)
numPrivateIp++;
} else if (ipCode[0] > 191 && ipCode[0] < 224) {
numC++;
if (ipCode[0] == 192 && ipCode[1] == 168)
numPrivateIp++;
} else if (ipCode[0] > 223) {
if (ipCode[0] < 240)
numD++;
else
numE++;
}
}
}
System.out.println(numA + " " + numB + " " + numC + " " + numD + " " + numE +
" " + numError + " " + numPrivateIp);
}
}
凡岛公司福利 607人发布
