返回字符串数组中的单词

时间:2014-02-26 14:33:47

标签: java arrays string methods return

我创建了一个输出String的方法。使用split方法和for循环,我将句子中的每个单词添加到一个String数组中,用" ed"替换每个单词的最后两个字母。现在,我的return语句应该返回每个单词。当我使用System.out.print时,它工作。当我使用return并在main方法中调用它时,我得到了这个输出:" [Ljava.lang.String; @ 1b6235b"

这个错误看起来很简单,但我不知道自己要去哪里。任何帮助,将不胜感激。

这是我的方法:

public String[] processInfo() {

    String sentence = this.phrase;
    String[] words = sentence.split(" ");
    if (!this.phrase.equalsIgnoreCase("Fred")) {
        for (int i = 0; i < words.length; i++) {
            words[i] = words[i].substring(0, words[i].length() - 2).concat(
                    "ed ");

            // System.out.print(words[i]);
        }
    }

    return words;

}

3 个答案:

答案 0 :(得分:3)

您正在打印数组,但默认情况下,数组没有toString()方法的正确实现。 你看到的是

  

“[Ljava.lang.String; @ 1b6235b”

这是[Ljava.lang.String;是String [] .class的名称,java.lang.Class表示String数组的类,后跟hashCode。 要打印数组,您应该使用Arrays.toString(..)

System.out.println(Arrays.toString(myArray));
  

然而,一个好主意,它以数组格式返回我的字符串。我的目标   是将它们恢复为句子格式。所以,例如,如果我的   输入是,“嘿,我的名字是弗雷德”,它将输出为“Hed ed naed ed   弗雷德“。抱歉,我忘了添加它也用逗号分隔它   当使用Arrays.toString

然后你应该修改你的processInfo()返回一个String或者创建一个将String[]转换为String的新方法。

示例:

//you use like this
String [] processInfoArray = processInfo();
System.out.println(myToString(processInfoArray));

// and in another part you code something like this 
public static String myToString(String[] array){
       if(array == null || array.length == 0)
            return ""; 

       StringBuilder sb = new StringBuilder();
       for(int i=0;i<array.length-1;i++){
         sb.append(array[i]).append(" ");
       }
       return sb.append(array[array.length -1]).toString();
}

答案 1 :(得分:1)

我可以从你的问题和评论中得到的结论是,你的目标是将它们恢复为句型。例如,如果您的输入是“嘿,我的名字是弗雷德”,那么它将输出为“Hed ed naed ed Fred”。

在这种情况下,您应该返回一个String,而不是一个数组。我已经修改了你的方法了。如果你想要别的东西,请告诉我。

public String processInfo() {

    String sentence = this.phrase;
    String[] words = sentence.split(" ");
    if (!this.phrase.equalsIgnoreCase("Fred")) {
        sentence = "";
        for (int i = 0; i < words.length; i++) {
            words[i] = words[i].substring(0, words[i].length() - 2).concat(
                    "ed ");
            sentence += " " + words[i];
            // System.out.print(words[i]);
        }
    }

    return sentence.trim();

}

答案 2 :(得分:0)

您对System.out.print的注释调用是从循环内部打印数组的每个元素。你的方法返回一个String []。当您尝试打印数组时,您将看到数组的java表示。您需要更改构建方法并返回一个字符串,其中所有数组条目连接在一起,或者您的调用代码需要遍历返回的数组并打印每个条目。