java - 尝试在 Java 中反转字符串时出错

标签 java

我正在尝试执行一个简单的逆向任务,例如:将字符串“how are you”更改为“you are how”。

这是我的代码:

public class Program {
    public static String revSentence (String str) {
        String [] givenString = str.split(" ");
        String [] retString = new String[givenString.length];

        int last = givenString.length - 1;

        for (int i = 0; i < givenString.length; i++) {
            retString [i] = givenString[last--]; 
        }

        return retString.toString();
    }

    public static void main(String[] args) {
        String m = "how are you";
        System.out.println(revSentence(m));
    }
}

我得到了一个奇怪的输出:

[Ljava.lang.String;@e76cbf7

最佳答案

输出一点也不“奇怪”——它是对象的内部字符串表示,由 Object.toString() 创建。 String[] 不会覆盖它。如果你想输出所有的整体,遍历它们并连接它们,最好使用 StringBuilder 来避免创建不必要的 String 实例。

public static String arrayToString (String[] array) {
    StringBuilder result = new StringBuilder();
    for (String value : array) {
        result.append(value);
    }
    return StringBuilder.toString();
}

如果您本身不需要该方法并希望将其包含在反转句子的整个过程中,这就是它的外观。它只迭代一次,向后迭代(=倒计时)以反转句子。

public static String revSentence (String str) {
    String []     givenString = str.split(" ");
    StringBuilder result      = new StringBuilder();

    // no need for 'last', we can use i to count down as well...
    for (int i = givenString.length - 1 ; i >= 0; i--) { 
        result.append(givenString[i]);
    }
    return result.toString();
}

[编辑]:由于 OPs 对其他答案之一的评论,关于尚未学会如何使用 StringBUilder,这里是一个 arrayToStirng 方法,但不使用一个。 但是请注意,这不应该正常进行,因为它会创建无用的 String 实例,由于 String< 的不可变特性,这些实例不会被 GC 清除(保留所有实例以供重用)。

public static String arrayToString (String[] array) {
    String result = "";
    for (String value : array) {
        result += value;
    }
    return result;
}

或者,没有专门的 arrayToString 方法:

public static String revSentence (String str) {
    String []     givenString = str.split(" ");
    String        result      = "";

    for (int i = givenString.length-1 ; i >= 0 ; i--) { 
        result += givenString[i];
    }
    return result;
}

关于java - 尝试在 Java 中反转字符串时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21589139/

相关文章:

java - 如何从jar文件运行类文件,其中类文件位于bin文件夹中

java - 为什么将 Joda DateTime 转换为 Calendar 并返回会更改 centuryOfEra 字段而不是其他任何内容?

java - 如何在 JTable 中呈现 JTable?

java - 为单个连接禁用 SSLHandshakeException

java - 如何在Android回收器 View 项目上添加onClick事件?

java - Glassfish + mod_proxy_ajp 下载被截断

Java RMI : Blocking for void method return?

java - 如何提取URI中的路径参数值?

java - namenode 没有提供 hadoop YARN

java - 如何在1秒内执行n次循环