-1

私の質問を裏付ける2つの簡単な例があります。(1) が機能しているのに (2) が機能していない理由がわかりません。私の意見では、私はそれらを同じように使用しています。

(1)

public String frontBack(String str) {
  if (str.length() <= 1) return str;

  String mid = str.substring(1, str.length()-1);

  // last + mid + first
  return str.charAt(str.length()-1) + mid + str.charAt(0);
}

(2)

public String front22(String str) {
  str = "test";
  return str.charAt(0);
}

2 番目のものでは、「文字から文字列に変換できません」という型の不一致エラーが表示されます。インターネットで答えを見つけようとすると、すべての例で str が var 型として宣言されていることがわかります。しかし、それは最初の例で動作します。

私は何が欠けていますか?

4

3 に答える 3

4

最初の例では、 を返しますString。2 番目に、 を (しようとして) 返しますchar

最初の例では文字列連結を行っているため、式の結果は文字列になります。

于 2012-07-15T15:50:40.807 に答える
0

入力することで修正できます

return "" + str.charAt(0);

どういうわけか、文字を文字列に強制します。

于 2015-11-03T02:15:54.003 に答える
0

最初の文字を文字列として返すには:

return str.substring(0,1);
于 2012-07-15T16:04:46.957 に答える