10
Июл
2016

Помогите разобраться с кодом на Java

Всем добрый день. Я новичок, прошу сильно не пинать :)

Есть задача: Написать программу, которая вводит с клавиатуры строку текста. Программа заменяет в тексте первые буквы всех слов на заглавные. Вывести результат на экран.

Есть, как мне показалось хорошее решение:

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 != ' ') - но это бред!

Помогите это понять :)

Источник: https://ru.stackoverflow.com/questions/543386/%D0%9F%D0%BE%D0%BC%D0%BE%D0%B3%D0%B8%D1%82%D0%B5-%D1%80%D0%B0%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D1%82%D1%8C%D1%81%D1%8F-%D1%81-%D0%BA%D0%BE%D0%B4%D0%BE%D0%BC-%D0%BD%D0%B0-java

Share

Тебе может это понравится...