java - 字符串反转,结果错误

标签 java string reverse

所以我的问题是关于获取反转的字符串,但只有长于或等于 5 个字符的单词。 因此,如果我们将 ("Hey fellow warriors") 传递给该方法,我们应该得到 "Hey wollef sroirraw"作为返回。我的代码给了我一些奇怪的结果,这些结果是 =“sroirraw fellow warriors”。

这是我的代码,请给我一些线索。不应返回最后一个单词后的空格,但我不知道为什么会这样。

public class PrimeChecker {

public String spinWords(String sentence) {

    String[] tablica = sentence.split(" ");

    for ( String x : tablica ) {
        int y = 0;
        if (  x.length() >= 5 ) {
            StringBuilder p = new StringBuilder(x).reverse();
            x = p.toString();
        }
        tablica[y] = x;
        y++;            
    }

    StringBuilder wynik = new StringBuilder();

    for ( String z : tablica ) {
        int y = 0;
        tablica[y] = z;
        wynik.append(tablica[y]);
        if (tablica.length > 1 && y != tablica.length - 1 ) {
            wynik.append(" ");
        }
        y++;
    }
    return wynik.toString();
}   
}

测试人员

public class PrimeCheckerTest {
    public static void main(String[] args) {
        PrimeChecker obiekt = new PrimeChecker();
        System.out.println(obiekt.spinWords("Hey fellow warriors").toString());     
    }
}

最佳答案

首先,我更愿意用匹配一个或多个空白字符的 \\s+ 进行拆分。其次,我将在我拆分 的标记上使用带有Arrays.stream 的lambda。然后我将 map 每个单词,将每个单词与 5 个或更多字符反转。这可以通过 StringBuilderreverse() 来完成。由于此方法不需要任何实例状态,我们可以将其设为static。最后,使用 Collector 将单词背面连接在一起。喜欢,

public static String spinWords(String sentence) {
    return Arrays.stream(sentence.split("\\s+"))
            .map(s -> s.length() >= 5 ? new StringBuilder(s).reverse().toString() : s)
            .collect(Collectors.joining(" "));
}

测试一下

public static void main(String[] args) {
    System.out.println(spinWords("Hey fellow warriors"));
}

哪个给出(如指定的)

Hey wollef sroirraw

关于java - 字符串反转,结果错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49182195/

相关文章:

c++ - 如何反转 C++ 中的输出顺序? (有或没有递归)

java - 垃圾收集器销毁对象后删除文件

java - 如果我需要第二次读取版本,为什么要使用 Repeatable Read(或更高)隔离级别?

.net OutOfMemory 异常

java - 双引号转义Java

android - 如何在反编译apk中获取Google-Service.Json文件?

java - 依赖项列表中的项目 'jasmin' 和英雄无效 对于烟灰

java - Apache Web 服务器,Java Web 服务 - Hello World 教程

Java 字符串拆分结果

C++-十六进制反转位