Я немного упростил ваш код и дал ему контекст "тестирования" (простой основной).
Я разместил соответствующие комментарии, чтобы вы могли легче отслеживать код.
public static void main(String[] args) {
System.out.println("if statement not triggered");
invokeMethod(new char[]{'a', 'b', 'c', 'd', 'e'});
System.out.println("if statement triggered");
invokeMethod(new char[]{'a', 'b', 'c', 'd', 'e', '.', 'g'});
}
private static void invokeMethod(char[] cIP) {
// a suggestion is to initialize your arrays to default values
// (i.e. if statement is not triggered). In this case, I've
// initialized them to a empty arrays.
char[] d = new char[]{};
char[] c = new char[]{};
// since you are using cIP.length several times,
// assign it to a variable for easier understanding/usage
int size = cIP.length;
if (size > 6 && size < 16) {
if (cIP[size - 2] == '.') {
// You can use this one-liner to set d to one character.
// Essentially, your code, just merged into one-liner
d = new char[]{cIP[size - 1]};
// instead of char-by-char copying in a loop
// you can use Arrays.copyOf()
c = Arrays.copyOf(cIP, size - 2);
}
}
System.out.println(c);
System.out.println(d);
}
Также c
, d
и cIP
являются бессмысленными именами. Попробуйте дать вашим переменным более значимые имена.