Java 无法取消对字符的引用

Java 无法取消对字符的引用,java,char,charat,Java,Char,Charat,尝试解决FizzBuzz问题时,我遇到了问题“charAt不能被取消引用”。下面是我的代码供参考 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')){ retur

尝试解决FizzBuzz问题时,我遇到了问题“charAt不能被取消引用”。下面是我的代码供参考

  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";
  }

}

让我们看看下面的例子:

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

比较
char
=
这样的基本类型。它返回一个
char
,您可以将其与
=
进行比较。有趣的是,这正是臭名昭著的FizzBuzz问题想要揭示的类型。我改为使用startWith()和endWith()函数,这两个函数帮助解决了我的问题,但是使用==并将长度更改为长度(),仍然没有解决我在这个版本中的问题。思考?与
String.charAt
不同,我更喜欢
String.startsWith
String.endsWith
。我不会多次执行测试,而是将结果保存到局部变量中。我将从布尔值f=str.startsWith(“f”),b=str.endsWith(“b”)开始。如果两个条件都不是真的,不要忘记返回原始的
str
(当前返回“FizzBuzz”两次)。如果您确实想使用
String.charAt
-
布尔值f=str.charAt(0)='f',b=str.charAt(str.length()-1)='b'