Untitled
unknown
plain_text
9 months ago
1.7 kB
3
Indexable
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());
}
}
}
}
Editor is loading...
Leave a Comment