charAt не может быть разыменовано - PullRequest
0 голосов
/ 05 ноября 2019

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

Задана строка str, если строка начинается с "f", возвращает "Fizz". Если строка заканчивается на «b», верните «Buzz». Если оба условия "f" и "b" выполняются, вернуть "FizzBuzz". Во всех остальных случаях возвращайте строку без изменений. (Смотрите также: Код FizzBuzz)

  public String fizzString(String str) {

  if ((str.charAt(0).equals('f'))&&(str.charAt((str.length)-1).equals('b'))){
   return "FizzBuzz";
  }
  else if (str.charAt(0).equals('f')){
   return "Fizz";
  }
  else if (str.charAt((str.length)-1).equals('b')){
   return "Buzz";
  }
  else{
   return "FizzBuzz";
  }

}

1 Ответ

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

Давайте рассмотрим следующий пример:

String str = "fab";
System.out.println(str.charAt(0) == 'f'); //true
System.out.println(str.charAt(0).equals('f')); //error: Cannot invoke equals(char) on the primitive type char
System.out.println(Character.toString(str.charAt(0)).equals("f")); //true
System.out.println(str.startsWith("f")); //true

Как насчет того, если str - пустая строка:

String str = "";
System.out.println(str.charAt(0) == 'f'); //java.lang.StringIndexOutOfBoundsException
System.out.println(str.charAt(0).equals('f')); //error: Cannot invoke equals(char) on the primitive type char
System.out.println(Character.toString(str.charAt(0)).equals("f")); //java.lang.StringIndexOutOfBoundsException
System.out.println(str.startsWith("f")); //false

Теперь я думаю, что вы уже знаете, как использовать String.startsWithи String.endsWith лучше, чем String.charAt.

...