ваш подход должен был проверить, может каждый октет ...
вы можете просто сделать это 4 раза или написать метод для этого:
private static boolean check(int octet, int index){
if (0xFF & octet < 256) return true;
System.out.println("Octet "+index+" is invalid";
return false;
}
и использовать этот метод в основном методе
if (check(first,0) && check (second, 2) && check (third, 3) && check(fourth, 4)){
System.out.println("your ip is valid");
}
примечания - это показывает только первый неверный октет - если вы хотите, чтобы проверить все, что вам нужно другие булево
boolean result = check(first,0) &&
check (second, 2) &&
check (third, 3) &&
check(fourth, 4); //reveals all errors
совершенно другой подход будет использовать http://docs.oracle.com/javase/7/docs/api/java/net/InetAddress.html#getByName%28java.lang.String%29
try{
/*InetAdress adress =*/ InetAdress.
getByName(""+first+"."+second+"."+third+"."+forth)
System.out.println("your ip is valid");
}catch (UnknownHostException e){
//TODO represent that error message into a nice expression
System.out.println("your ip is invalid");
}
, но это также не предоставляет информацию о том октета, который является недействительным ...
(кстати - что является неправильно с кодом? это нормально!)
Вы можете взять всю строку в, разделить его». ", убедитесь, что длина массива равна 4, а затем петля над каждым элементом массива и подтвердите, что это законный октет. Но в целом, я думаю, вы можете решить свой текущий код, просто цикл 4 раза, и в каждом цикле сканирование октета, проверки и punt, если проверка не выполняется. Удаляет много дубликатов кода. –
Бьюсь об заклад, вы можете использовать цикл for. Кажется, что существует довольно много дублирующего кода, который выглядит аналогичным. – hooknc
Я пытаюсь использовать цикл for, но я застреваю при попытке объявить переменную для каждого октета. Мне понадобится 4 разных переменных (для каждого октета), так как бы объявить их в цикле? – Kootling