题解 | 识别有效的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 A = 0; int B = 0; int C = 0; int D = 0; int E = 0; int wr = 0; int pr = 0; while (in.hasNextLine()) { // 注意 while 处理多个 case String a = in.nextLine(); int index = a.indexOf('~'); String ip = a.substring(0, index); String son = a.substring(index + 1); int ipindex = 0; int sonindex = 0; int[] ipnum = new int[4]; int[] sonnum = new int[4]; int ipflag = 0; int sonflag = 0; for (int i = 0; i < 4; i++) { if (ipflag == -1) { continue; } if (i == 3) { ipnum[i] = Integer.parseInt(ip.substring(ipindex)); } else { int ipindex1 = ip.indexOf('.', ipindex); if (ipindex1 == ipindex) { ipflag = -1; continue; } ipnum[i] = Integer.parseInt(ip.substring(ipindex, ipindex1)); ipindex = ipindex1 + 1; } // System.out.println(ipnum[i]); } if (ipnum[0] == 0 || ipnum[0] == 127) continue; for (int i = 0; i < 4; i++) { if (sonflag == -1) { continue; } if (i == 3) { sonnum[i] = Integer.parseInt(son.substring(sonindex)); } else { int sonindex1 = son.indexOf('.', sonindex); if (sonindex1 == sonindex) { sonflag = -1; continue; } sonnum[i] = Integer.parseInt(son.substring(sonindex, sonindex1)); sonindex = sonindex1 + 1; } // System.out.println(sonnum[i]); } // System.out.println(ipflag + " " + sonflag); // if(ipnum[0] == 0 || ipnum[0] == 127) continue; if (sonnum[0] == 255) { if (sonnum[1] == 255) { if (sonnum[2] == 255) { if (sonnum[3] == 255) { sonflag = -1; } else if (sonnum[3] == 0 || sonnum[3] == 128 || sonnum[3] == 192 ||sonnum[3] == 224 || sonnum[3] == 240 || sonnum[3] == 248 || sonnum[3] == 252 ||sonnum[3] == 254) { } else { sonflag = -1; } } else if (sonnum[2] == 0 || sonnum[2] == 128 || sonnum[2] == 192 ||sonnum[2] == 224 || sonnum[2] == 240 || sonnum[2] == 248 || sonnum[2] == 252 ||sonnum[2] == 254) { if (sonnum[3] != 0) sonflag = -1; } else sonflag = -1; } else if (sonnum[1] == 0 || sonnum[1] == 128 || sonnum[1] == 192 ||sonnum[1] == 224 || sonnum[1] == 240 || sonnum[1] == 248 || sonnum[1] == 252 ||sonnum[1] == 254) { if (sonnum[2] != 0 || sonnum[3] != 0) sonflag = -1; } else sonflag = -1; } else if (sonnum[0] == 128 || sonnum[0] == 192 ||sonnum[0] == 224 || sonnum[0] == 240 || sonnum[0] == 248 || sonnum[0] == 252 ||sonnum[0] == 254) { if(sonnum[1]!=0 || sonnum[2]!=0 || sonnum[3]!=0){ sonflag = -1; } }else sonflag = -1; if (ipflag == -1 || sonflag == -1) { wr = wr + 1; continue; } if(1 <= ipnum[0] && ipnum[0] <= 127){ A++; if(ipnum[0] == 10) pr++; }else if(128 <= ipnum[0] && ipnum[0] <= 191){ B++; if(ipnum[0] == 172 && ipnum[1] >= 16 && ipnum[1] <= 31) pr++; }else if(192 <= ipnum[0] && ipnum[0] <= 223){ C++; if(ipnum[0] == 192 && ipnum[1] == 168) pr++; }else if(224 <= ipnum[0] && ipnum[0] <= 239){ D++; }else if(240 <= ipnum[0] && ipnum[0] <= 255){ E++; } } System.out.print(A + " " + B + " " + C + " " + D + " " + E + " " + wr + " " + pr); } }