Каждое слово в строке с большой буквы (Java)

403
26 декабря 2016, 23:36

Код написал,но в консоль выдаются символы при использовании кириллицы.

Символы:

Код:

import java.util.Scanner;
 public class Pyatnadcat2 {
  public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
     String s = in.nextLine();
     System.out.println(capitalize(s));
    }

static String capitalize(String s){
    char[] arr = s.toCharArray();
    boolean inWord = false;
    for (int i = 0; i< arr.length; i++) {
        if (arr[i] >= 97 && arr[i] <= 122) {
            if (inWord) {
                continue;
            }
            arr[i] -= 32;
            inWord = true;
        } else {
            inWord = false;
        }
    }
    return new String(arr);
}
}
Answer 1

Во-первых, в NetBeans нужно поменять кодировку проекта на utf-8:

Правой кнопкой на проекте - свойства -> картинка:

Следующий момент (или замечание?):

Вы вводите в консоль русские буквы, а в методе проверяете латинские строчные:

цифра в html-коде символа - это и есть этот символ в Java, что Вы проверяете (97-122 диапазон) (*кто-нибудь, ради Бога, отредактируйте и напишите правильно)

А это значит, что Ваш код работает так, что Вы вводите кириллицу - и выводите ту же кириллицу, без манипуляций.

p.s. А вообще, лучше использовать встроенный метод toUpperCase и не забивать себе этим голову ;)

Answer 2

Вместо дремучего кода типа:

if (arr[i] >= 97 && arr[i] <= 122) 

надо использовать нормальные методы типа: Character.isLowerCase(arr[i]), а вывих arr[i] -= 32 лечится методом: Character.toUpperCase(arr[i])

А вообще профессиональный подход это использовать внешнюю библиотеку, например Apache Commons-Lang где такие вещи уже давно вылизаны и отработаны.

READ ALSO
Возведение в степень с условием [требует правки]

Возведение в степень с условием [требует правки]

Дано действительное положительное число a и целое неотрицательное число n

402
Добавление заголовка в запрос Java

Добавление заголовка в запрос Java

Здравствуйте, господа! Работал тут с API ЯДиска, все шло хорошо до момента отправки авторизации не из SDKТут просят сделать так:

385
Заряд батареи каждый раз выводится на новой строке

Заряд батареи каждый раз выводится на новой строке

Нужно выводить заряд батареи на экран что собственно и делаю ,но дальше он должен изменятся в зависимости от уровня ,но у меня он печатает...

379