Страницы

Поиск по вопросам

вторник, 28 января 2020 г.

Как сделать реверс слов в строке, но сохранить их положение?

#java #строки


Возникли трудности при изучении java. Поставлена задача: "Дана строка. Вывести на
экран строку со словами, которые записаны наоброт, но не изменив их порядок. Пример:
'Сегодня чудесная погода', вывести на экран 'Яндогес яанседуч адогоп'".

Вот что у меня получилось сделать:

public class Main {

    public static void main(String[] args) {
        //Строка для которую нужно изменить
        String str3 = "Ut sit amet consequat nisl";
        //Разбитие строки по пробелу в массив
        String[] words = str3.split(" ");
        //Создание билдера строки для добавления слов
        StringBuilder newStr = new StringBuilder();


        for (int i=0; i


Ответы

Ответ 1



public static void main(String[] args) { String str3 = "Ut sit amet consequat nisl"; String[] words = new StringBuilder(str3).reverse().toString().split(" "); StringBuilder newStr = new StringBuilder(); for (int i = words.length - 1; i >= 0; i--) newStr.append(words[i]).append(" "); System.out.println(newStr); } Как-то сложно все, можно проще...

Ответ 2



У Вас в коде 1 опечатка: for (int j = 0; j < words[i].length(); i++) { // i++ вместо j++ tempCharArray[j] = words[i].charAt(j); } Ну и не хватает newStr.append(" "); в конце цикла Вот класс целиком: public class Main { public static void main(String[] args) { //Строка для которую нужно изменить String str3 = "Ut sit amet consequat nisl"; //Разбитие строки по пробелу в массив String[] words = str3.split(" "); //Создание билдера строки для добавления слов StringBuilder newStr = new StringBuilder(); for (int i=0; i a + " " + w).get(); System.out.println( str3); } public static String reverse(String str){ return str.chars().mapToObj(c -> (char) c) .reduce("", (s,c) -> c+s, (s1,s2) -> s2+s1); } } PS: Совет, научитесь пользоваться отладчиком

Ответ 3



https://ideone.com/qtEDMo import java.util.*; import java.util.function.*; import java.util.regex.*; import java.lang.*; import java.io.*; class Ideone { public static void main (String[] args) throws Exception { String s = "Ut sit amet consequat nisl"; System.out.println(StringReplacer.replace(s, Pattern.compile("\\w+"), m -> new StringBuilder(m.group()).reverse().toString())); } } class StringReplacer { // https://stackoverflow.com/q/43371521/4928642 public static String replace(String input, Pattern regex, Function callback) { StringBuffer resultString = new StringBuffer(); Matcher regexMatcher = regex.matcher(input); while (regexMatcher.find()) { regexMatcher.appendReplacement(resultString, callback.apply(regexMatcher)); } regexMatcher.appendTail(resultString); return resultString.toString(); } } PS: В очередной раз радуюсь, что я не пишу на джаве: var s = "Ut sit amet consequat nisl"; console.log(s.replace(/\w+/g, m => m.split("").reverse().join("")));

Комментариев нет:

Отправить комментарий