#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("")));
Комментариев нет:
Отправить комментарий