求解代码publicStringsolve(StringIP){// 校验是否为IPv4if(IP.indexOf(.)!-1){// 按.分割.是正则通配符需转义为\\.String[]strsIP.split(\\.);// IPv4核心规则必须被.分割为4段if(strs.length!4){returnNeither;}// 校验IPv4for(inti0;istrs.length;i){// 提前校验段非空避免空串导致charAt/parseInt运行时异常if(strs[i].isEmpty()){returnNeither;}// 当前段仅能包含数字0-9for(charc:strs[i].toCharArray()){if(!(c0c9)){returnNeither;}}// 数值≤255 且 无前导零唯一例外段本身是0即长度1的0if(Integer.parseInt(strs[i])255||(strs[i].charAt(0)0strs[i].length()1)){returnNeither;}}// 所有IPv4规则校验通过returnIPv4;}// 校验是否为IPv6elseif(IP.indexOf(:)!-1){// IPv6首尾不能为:if(IP.charAt(0):||IP.charAt(IP.length()-1):){returnNeither;}// 按:分割IPv6字符串String[]strsIP.split(:);// IPv6必须被:分割为8段if(strs.length!8){returnNeither;}// 校验IPv6for(inti0;istrs.length;i){// 当前段仅能包含十六进制字符for(charc:strs[i].toCharArray()){if(!(c0c9)!(cacf)!(cAcF)){returnNeither;}}// 段不能为空 且 长度≤4if(strs[i].equals()||strs[i].length()4){returnNeither;}}// 所有IPv6规则校验通过returnIPv6;}// 既不包含.也不包含:直接判定为非法IPelse{returnNeither;}}小贴士题目意思不是太难理解就是可能有点繁琐。理清思路应该问题不大。