1
int length = s.length();

if (length = 0){
    return s;
}

else {
    return s.charAt(0).toUpperCase()+ s.substring(1);
}

我收到两个错误说:

if (length = 0){
^^^^^^^^^^
Type mismatch: cannot convert from int to boolean


return s.charAt(0).toUpperCase()+ s.substring(1);
       ^^^^^^^^^^^^^^^^^^^^^^^^^
Cannot invoke toUpperCase() on the primitive type char

另外,如果它是空刺,则应将其退回。这就是我使用 If-Else 语句的原因。

4

6 回答 6

3

if (length = 0)应该if (length == 0)

您将值 0 分配给length而不是其与 0 进行比较。

我建议你看看这个

在运行时,赋值表达式的结果是赋值发生后变量的值。赋值表达式的结果本身不是变量。

这样,您if永远不会满意,因为其中的值评估为分配的值(在本例中为 0),因此您的程序转到else,您应该:

return Character.toUpperCase(s.charAt(0)) + s.substring(1);
于 2013-04-06T06:48:26.197 回答
2

在您的if声明中,您将值分配0length. 因此,您的编译器会抱怨,因为它需要一个boolean表达式,而不是if语句中的 int (赋值返回它正在分配的值,这就是它提到的原因int)。

您的意思是通过使用来评估布尔表达式==

第二个问题是因为charAt(int)返回一个char原语,它没有任何方法。

在这种情况下,您可能希望使用Character.toUpperCase(char)您的第一个字符String并附加其余字符。

于 2013-04-06T06:48:13.240 回答
2

==在 if 语句中缺少

charAt(0)返回一个字符,使其成为字符串的一种方法是Character.toString(c)

于 2013-04-06T06:49:00.680 回答
0

将其更改为:

if (length == 0) {
    return s;
}

return Character.toUpperCase(s.charAt(0)) + s.substring(1);

注意:如果字符串的长度正好是 1,你仍然会得到一个错误,因为s.substring(1). 当字符串的长度正好为 1 时,您可能想要添加一个附加条件。

于 2013-04-06T06:49:47.170 回答
0

这一行:

if (length = 0) {

表示“我想将长度设置为零”。但你想要的是

if (length == 0) {

这意味着“长度是否为零?

当您将整数传递到需要布尔值的地方时,第一条语句最终会导致异常。

于 2013-04-06T06:50:12.010 回答
0

也许你可以试试这个:

String s = "testing";
String upper = s.toUpperCase();
System.out.print(upper);
于 2013-04-06T06:50:26.950 回答