Напишите функцию, которая принимает строку. Возвращает строку, содержащую все символы исх стр, все буквы в верхнем регистре должны быть в нижнем
Напишите функцию, которая принимает строку. Возвращает строку, содержащую все символы исходной строки, но все буквы в верхнем регистре должны быть в нижнем регистре. Строка может содержать символы с кодами от 32 по 126.
Написала код, но скорее всего напутала с типами переменных Пожалуйста помогите исправить ошибку Вот мой код
public static String toLowerCase(String s){
char [] array = s.toCharArray();
for (int i = 0; i < array.length; i++){
char a = 0;
if (array[i] >= 65 && array[i] <= 90){
a = (char)(array[i] + 32);
}else{
a = (char)(array[i]);
}
}
String result = new String(array);
return result;
}
После того как я в for создала переменную для последующего присвоения, я пробовала возвращать return полученное значение: "return a" - но выделяет красным, ругается что разные типы... Может кто-то подскажет как правильно написать.... Заранее огромное спасибо...
Ответы (1 шт):
Да, как правильно написал @rusgeli - у вас переменной a ничего не присваивалось. Чтобы не забывать об этом, стоит переменные (даже временные) именовать явно, чтобы было понимание, что за данные в них лежат.
Ну, скажем, не:
a = (char)(array[i]);
а что-то вроде:
newChar = (char)(array[i]);
и тогда можно обратить внимание, что newChar есть, но с ним никто ничего не делает.)
В Вашем случае и вовсе можно написать что-то подобное, без переменной:
for (int i = 0; i < array.length; i++){
if (array[i] >= 65 && array[i] <= 90){
array[i] = (char)(array[i] + 32);
}
}
Как понимаете, else Вам не сильно нужен.)
А вот на разные типы компилятор ругался, потому что в сигнатуре метода вы пишете "String", что предполагает, что метод вернет значение типа String. Но когда пишете "return a" - возвращаете char, ведь именно этот тип Вы указали переменной.
А вот return result - уже верно, т.к. присвоено корректное значение.