这种题关键就是要细心,把所有可能出现的错误,通过 if-else 语句排除掉

  1. 初始 字符串分割之后,一定要分成 4 部分,否则直接返回
  2. 分割后的字符串不能为 空串,否则直接返回
  3. 分割后的字符串不能包含 除数字以外 的任何字符,否则直接返回
  4. IPv4 中,对于每一部分的数字,都不能 大于255 或者为 负数
  5. 别忘了,对于每一部分,不能有 前导0,即不能有 255.002.255.12 这种情况
import java.util.*;
public class Main {
    public static void main (String[] args) {
        Scanner scan = new Scanner(System.in);
        String[] strs = scan.nextLine().split("\\.");
        if (strs.length != 4) {
            System.out.println("NO");
            return;
        }
        for (String str : strs) {
            if ("".equals(str)) {
                System.out.println("NO");
                return;
            }
            int tmp = 0;
            try {
                tmp = Integer.valueOf(str);
            } catch (Exception e) {
                System.out.println("NO");
                return;
            }
            if (tmp < 0 || tmp > 255) {
                System.out.println("NO");
                return;
            }
            if (String.valueOf(tmp).length() != str.length()) {
                System.out.println("NO");
                return;
            }
        }
        System.out.println("YES");
    }
}