Где я должен инициализировать переменную для работы в блоке IF? - PullRequest
0 голосов
/ 05 ноября 2018

Я пытаюсь решить эту проблему на CodingBat:

Вернуть true, если заданная строка содержит от 1 до 3 символов 'e'.

Пока у меня есть это решение, но оно не скомпилируется, если у меня будет целое число "numofe", инициализированное внутри блока IF, потому что другие части кода не будут работать с ним, и наоборот. Так, где я должен инициализировать переменную, чтобы быть доступным везде в коде?

Спасибо.

public boolean stringE(String str) {

  int numofe;

  for(int x = 0; str.length() > x; x++){

    if (str.charAt(x)=='e'){

      numofe++;
    }

  }
   return (numofe>0 && numofe<4);
}

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

Переменные внутри блока должны быть инициализированы перед их использованием, инициализировать их начальным значением, это может быть любое допустимое значение. но вы не можете использовать их без предварительной инициализации.

int numofe=0;

Это не скомпилирует numofe++;, потому что numofe не инициализируется в вашем коде

0 голосов
/ 05 ноября 2018

Если вы определяете переменную внутри блока (if, while, for и т. Д.), Она известна только внутри этого блока. Если вы хотите использовать его и вне его / их, вам нужно определить перед соответствующими блоками.

В этом случае вы не можете определить внутри if, потому что вам не известно return(numofe>0 && numofe<4. Вы должны определить его до if и for.

Вам также нужно сначала инициализировать его, потому что он может быть возвращен без использования, поэтому: int numofe = 0;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...