1
int length = s.length();

if (length = 0){
    return s;
}

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

次の 2 つのエラーが表示されます。

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 を割り当てており、0と比較lengthしていません。

これをご覧になることをお勧めします

実行時の代入式の結果は、代入が行われた後の変数の値です。代入式の結果自体は変数ではありません。

このように、ifその中の値が割り当てられた値 (この場合は 0) に評価されるため、満足することはelseありません。

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

==if ステートメントに がありません

charAt(0)これを文字列にする 1 つの方法は、char を返します。Character.toString(c)

于 2013-04-06T06:49:00.680 に答える
2

ステートメントでは、値を にif代入しています。このため、コンパイラは文に int ではなく式を期待しているため、不平を言っています (代入は、代入している値を返すため、.0lengthbooleanifint

代わりに使用してブール式を評価することを意味します==

2 番目の問題は、メソッドを持たないプリミティブをcharAt(int)返すためです。char

この場合、おそらくCharacter.toUpperCase(char)あなたの最初の文字を利用しString、残りを追加したいと思うでしょう。

于 2013-04-06T06:48:13.240 に答える
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 に答える