Всем добрый день. Я новичок, прошу сильно не пинать :)
Есть задача: Написать программу, которая вводит с клавиатуры строку текста. Программа заменяет в тексте первые буквы всех слов на заглавные. Вывести результат на экран.
Есть, как мне показалось хорошее решение:
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String s = reader.readLine();
s = s.toUpperCase().charAt(0) + s.substring(1);
boolean sign = false;
for (int i = 1; i < s.length(); i++) {
char c = s.charAt(i);
if (c == ' ') {
sign = true;
}
if (sign && c != ' ') {
s = s.substring(0, i) + s.toUpperCase().charAt(i) + s.substring(i + 1);
sign = false;
}
}
System.out.println(s);
}
}
Принцип я понял так: Сначала сразу делаем заглавной первую букву первого слова. Затем проходимся по каждому символу и как только находим пробел и при этом следующий символ не пробел, то берем то что уже имеется в строке + меняем следующий символ после пробела на заглавную букву.
Вопрос: почему это работает?
if (c == ' ') {sign = true;} // если пробел "sign = true
if (sign && c != ' ') // Почему это условие выполняется ??? Допустим мы вышли с первого условия с результатом sign = true. Тогда логично следующее условие предствить в виде if (с== ' ' && c != ' ') - но это бред!
Помогите это понять :)
Свежие комментарии