2013-04-06 4 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 

Plus, если это пустые жала она должна просто вернуть его. Вот почему я использую оператор 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

2

В своем заявлении if вы назначаете значение 0 на номер length. Из-за этого ваш компилятор жалуется, поскольку он ожидает выражение boolean, а не int в операторе if (присваивание возвращает присваиваемое значение, поэтому в нем упоминается int).

Вы хотите оценить булевское выражение, используя вместо этого ==.

Вторая проблема заключается в том, что charAt(int) возвращает примитив char, который не имеет методов.

В этом случае вы, вероятно, захотите использовать Character.toUpperCase(char) на первом символе своего String и добавьте остальные.

2

вы пропустили == в случае заявление

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);