Untitled
public class IPFormatter { public static String formatIp(String input) { if (input == null || !input.matches("\\d+") || input.length() < 7 || input.length() > 12) { throw new IllegalArgumentException("The input must be a numeric string between 7 and 12 digits."); } String remaining = input; StringBuilder formattedIp = new StringBuilder(); int segmentsCount = 4; for (int i = 0; i < 3; i++) { int segmentLength = Math.max(1, remaining.length() - (segmentsCount - i - 1)); int segment = Integer.parseInt(remaining.substring(0, segmentLength)); while (segment > 255 && segmentLength > 1) { segmentLength--; segment = Integer.parseInt(remaining.substring(0, segmentLength)); } formattedIp.append(segment).append("."); remaining = remaining.substring(segmentLength); } // Último segmento int lastSegment = Integer.parseInt(remaining); if (lastSegment > 255) { throw new IllegalArgumentException("Invalid IP address segments."); } formattedIp.append(lastSegment); return formattedIp.toString(); } public static void main(String[] args) { // Testando os exemplos fornecidos String[] testIps = {"179176201147", "2007110564", "4516844142"}; for (String ip : testIps) { try { System.out.println("Input: " + ip + " -> Output: " + formatIp(ip)); } catch (IllegalArgumentException e) { System.out.println("Input: " + ip + " -> Error: " + e.getMessage()); } } } }
Leave a Comment