Странная ошибка недостижимого кода в Java
Я пишу программу, которая определяет, сертифицирована ли строка "xyz" во входной строке или нет. Я создаю переменную, которая хранит положение "xyz" с циклом for, а затем сравниваю ее с числом символов до и после, создавая целые числа с.substring() и.length(). Как ни странно, код не компилируется после первого if -, которое возвращает true или false, говоря, что любое возвращаемое выражение после этого недоступно. Может ли кто-нибудь помочь мне обернуть голову вокруг этого?
Большое спасибо!
Может быть, потому что переменные длины еще не запускались и для компилятора они всегда будут разными? Как это решить?
public static boolean xyzCenter(String str){
//identifies the position of "xyz" within the String.
int xyzPosition=1;
//loops through the string to save the position of the fragment in a variable.
for(int i = 0; i<str.length(); ++i){
if(str.length()>i+2 && str.substring(i, i+3).equals("xyz")){
xyzPosition=i;
}
}
//ints that determine the length of what comes before "xyz", and the
length of what comes after.
int lengthBeg = str.substring(0, xyzPosition).length();
int lengthEnd = str.substring(xyzPosition+3, str.length()).length();
if ((lengthBeg != lengthEnd));{
return false;
} //this compiles.
return true; //this doesn't!
1 ответ
if ((lengthBeg != lengthEnd)); <----- remove that semicolon
Когда вы ставите точку с запятой в конце if
это как пустой if
блок. Ваш код эквивалентен
if ((lengthBeg != lengthEnd)) {
// Do nothing
}
{
return false;
}
return true; // Unreachable because we already returned false