Превращение N-го (вход от пользователя) числа в верхний регистр, а остальные будут в нижнем регистре - PullRequest
0 голосов
/ 18 февраля 2020

Я спрошу это снова. У меня есть эта проблема, которая заключается в создании программы, которая будет читать строку ввода от пользователя (предложение или слово). И N-й номер (от пользователя) превратится в верхний регистр, а остальные будут в нижний регистр. Пример:

string = "доброе утро всем"

n = 2

Выходные данные = gOod mOrning eVeryone

    for (int x = 0; x < s.length(); x++)
        if (x == n-1){
            temp+=(""+s.charAt(x)).toUpperCase();
        }else{
            temp+=(""+s.charAt(x)).toLowerCase();
        }
    s=temp;
    System.out.println(s);
}

Выходные данные: good Каждое утро

Ответы [ 2 ]

0 голосов
/ 18 февраля 2020

Вы можете сделать это с двумя циклами for. Итерация по каждому слову и в итерации по каждому символу.

toUpperCase(2, "good morning everyone");

private static void toUpperCase(int nth, String sentence) {
    StringBuilder result = new StringBuilder();
    for(String word : sentence.split(" ")) {
        for(int i = 0; i < word.length(); i++) {
            if(i > 0 && i % nth - 1 == 0) {
                result.append(Character.toString(word.charAt(i)).toUpperCase());
            } else {
                result.append(word.charAt(i));
            }
        }
        result.append(" ");
    }
    System.out.println(result);
}

БОЛЬШОЙ УТВЕРЖДЕНИЕ ВСЕГО

0 голосов
/ 18 февраля 2020

Я знаю, чего ты хочешь, но ты не очень хорошо сформулировал свой вопрос. Единственная часть, которую вы пропустили - это перебирать каждое слово в предложении. Если бы вы спросили "как применить функцию к каждому слову в строке" , вы, вероятно, получили бы лучший ответ.

Это немного неаккуратно, так как добавляет трейлинг "" до конца - но это легко исправить.

public class Test {

    static String test = "This is a test.";

    public static void main(String[] args) {
        String[] words = test.split(" ");
        String result = "";

        for (String word : words) {
            result += nthToUpperCase(word, 2);
            result += " ";
        }

        System.out.println(result);
    }

    public static String NthToUpperCase(String s, int n) {
        String temp = "";

        for (int i = 0; i < s.length(); i++) {
            if (i == (n-1)) {
                temp+=Character.toString(s.charAt(i)).toUpperCase();
            } else {
                temp+=Character.toString(s.charAt(i));
            }
        }

        return temp;
    }
}
...