Как ничего не вернуть, когда count равен нулю? - PullRequest
0 голосов
/ 19 сентября 2019

Я хочу, чтобы функция countChar возвращала значение, только если счетчик больше нуля, в противном случае я хочу, чтобы он просто ничего не возвращал.

Я понимаю, что метод не может возвращать ноль, поскольку ноль не может бытьInt.Есть ли другой способ эффективно вернуть «нулевое» значение?

public static int countChar(String str, char ch){ 
int count = 0;
for (int i=0;i<str.length();i++) {
  if (str.charAt(i)==ch)
    count++;
  }
  if (count>0) {
    return count;
  }else{
    return null;
  }
}

ошибка: несовместимые типы: невозможно преобразовать в int return null;^ Хотелось бы, чтобы вместо нуля возвращалось абсолютно ничего.

Ответы [ 2 ]

2 голосов
/ 19 сентября 2019

Но тогда метод именования не имеет смысла - countChars подсчитывает, сколько раз символ встречается в строке.Если конкретный символ не встречается, тогда 0 - вполне разумный ответ.Нулевой ответ на самом деле не является разумным - если вы хотите получить нулевое значение, тогда метод, который вызывает countChars, возвращает 0 и действует так, как если бы он был нулевым:

int result = countChars("Hello world", 'z');
if(result == 0)
  someMethod(null);
else
  someMethod(result.ToString());

Даже бросить исключение лучше, чем возвращатьnull, потому что он, по крайней мере, сообщает разработчику, который использует ваш код, что не так и дает некоторое представление о том, как это исправить.Просить код сделать что-то, что на самом деле не должно возвращать пустой ответ, а получить пустой ответ может быть невероятно сложно работать с

2 голосов
/ 19 сентября 2019

Используйте Integer вместо int, все остальное остается неизменным:

public static Integer countChar(String str, char ch){...} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...