Как вывести результат через пробел

99
31 марта 2022, 21:30

Задача: перевернуть строку.

Проблема: пытаюсь вывести через пробел reversed (перевёрнутый массив char'ов), а он пишется в консоли вот так: [C@6dbb137d [C@3c9d0b9d [C@43301423 [C@2f112965 [C@1a04f701 [C@4e91d63f [C@d4342c2 [C@2bbf180e [C@163e4e87

Если оставить просто System.out.print(reversed);, то всё в одно строку получается. Без пробелов.

Код:

public class Kata {
    @Test
    public void main() {
        assertEquals("ehT kciuq nworb xof spmuj revo eht yzal .god", Kata.reverseWords("The quick brown fox jumps over the lazy dog."));
        //assertEquals("elppa", Kata.reverseWords("apple"));
        //assertEquals("a b c d", Kata.reverseWords("a b c d"));
        //assertEquals("elbuod  decaps  sdrow", Kata.reverseWords("double  spaced  words"));
    }
    public static String reverseWords(final String original) {
        char[] temp = null;
        String[] words = original.split("\\s");
        for (int i = 0; i < words.length; i++) {
        temp = words[i].toCharArray();
        char[] reversed = new StringBuilder(new String(temp)).reverse().toString().toCharArray();
        System.out.print(reversed + " ");
        }
        return "";
      }
}
Answer 1

А зачем тут "char[] reversed = new StringBuilder(....toCharArray();" преобразовывать опять к массиву, можно же получить перевернутую строку и к ней добавить пробел, а затем следующую перевернутую строку. И в самом конце почему-то идет возврат пустой строки "return "";"

public static String reverseWords(final String original) {
    char[] temp = null;
    StringBuffer sb = new StringBuffer();
    String[] words = original.split("\\s");
    if (words.length == 0) {return original;}
    for (int i = 0; i < words.length; i++) {
        temp = words[i].toCharArray();
        sb.append(new StringBuilder(new String(temp)).reverse());
        sb.append(" ");
        System.out.print(sb);
    }
    sb.deleteCharAt(sb.length() - 1);
    return sb.toString();
  }
Answer 2

Вот новый и более легкий вариант:

public class Main
{
  public static String reverseWords(final String original)
  { 
    String[] array = original.split(" ");
    if(array.length == 0) 
        return original;
    int i = 0;
    for(String string : array){
        array[i] = new StringBuilder(string).reverse().toString();
        i++;
    }
    return String.join(" ",array);
  }
}
READ ALSO
try catch на каждую строчку или общий

try catch на каждую строчку или общий

Предположим у нас есть код:

64
Строка imap_body php

Строка imap_body php

Подскажите пожалуйста, есть такой код, которым вывожу письма с gmail

92
Фреймворк Слим не видит контроллер

Фреймворк Слим не видит контроллер

Начал работать с Фреймворком Slim для написания сайта на пхпОднако, столкнулся с проблемой при пройстейшем рутинге

92
Удалить часть строки preg_replace

Удалить часть строки preg_replace

Есть строка https://sitecom/ru/moskov/medceter&page=2 Еще бывает https://site

73