public int getEntityIndex(String name){
for(int i = 0; i < entities.length; i++){
if(entities[i].getName().toUpperCase().equals(name.toUpperCase())){
break;
}
}
return i;
}
Этот код вызывает ошибку: i
не может быть разрешен переменной. Я предполагаю, что переменные, объявленные внутри объявления цикла цикла, выходят за рамки остальной части метода, но я не смог найти какую-либо информацию об этой проблеме.«... не может быть разрешено переменной». Почему нет?
После анализа кода на некоторое время, я начинаю видеть, что использование его плохая идея (что если entities[i]
никогда не сравняется name
? Метод вернет entities.length - 1
, даже если совпадение не найдено. Я думаю, что я Л.Л. использовать while(!found)
подход вместо.
чтобы уточнить, я не спрашиваю, как решить эту проблему. Я спрашиваю, почему эта ошибка происходит.
Спасибо!
«Я предполагаю, что переменные, объявленные внутри для объявления петли выходят за рамки оставшейся частью методы» - Точно. Объем 'i' находится только внутри цикла' for'. – resueman
Это, безусловно, дубликат, но переменная выходит за рамки. «i» существует только внутри цикла for. Когда вы покидаете цикл for, я больше не существую. Это будет работать: 'int i = 0; for (; i
И почему также этот вопрос получил ответы на два миллиона одинаковых ответов ... – Smar