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