2013-04-06 189 views
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语句。

回答

3

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

你值为0分配给length而不是比较为0。

我建议你看一看this

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

这样,你的if是因为它里面的价值评估,以所分配的(0在这种情况下)的值永不满足,所以你的程序进入else,有你应该:

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

完美解释!谢谢 :) – Kimmm 2013-04-06 06:58:11

2

在您的if声明中,您将值0指定为length。正因为如此,编译器会抱怨,因为它期望boolean表达式,而不是if语句中的int(赋值返回它正在分配的值,这就是为什么它提到了int)。

您的意思是使用==来代替布尔表达式。

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

在这种情况下,您可能需要在String的第一个字符上使用Character.toUpperCase(char),然后再附加其他字符。

2

你错过了== if语句

charAt(0)返回一个字符,一个做这样的字符串的方法是Character.toString(c)

0

它改成这样:

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

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

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

0

这条线:

if (length = 0) { 

的意思是“我想设置的长度为零”。但是,你要的是

if (length == 0) { 

这意味着“是长度等于零?

第一条语句最终结果为异常,因为你传递一个整数到一个地方,布尔是预期。

0

也许你可以试试这个:

String s = "testing"; 
String upper = s.toUpperCase(); 
System.out.print(upper); 
相关问题