Java 我的程序中的toString方法不正确

Java 我的程序中的toString方法不正确,java,arrays,tostring,sentence,Java,Arrays,Tostring,Sentence,任务是创建一个名为句子的类,该类将用于表示英语文本的句子。它应具有以下特点: 字符串数组类型的私有实例变量words,保存组成句子的单词 以单个字符串数组作为参数的构造函数。数组的元素将是句子中的单词 重写对象类中提供的继承toString()的toString()方法。这将返回一个由句子中的所有单词组成的字符串,按单词的顺序用空格分隔 一个方法shortest(),它返回一个包含句子中最短单词的字符串。(如果有多个最短单词,则返回其中一个) 一个方法,longest(),它返回一个包含句子中最

任务是创建一个名为句子的类,该类将用于表示英语文本的句子。它应具有以下特点:

字符串数组类型的私有实例变量words,保存组成句子的单词

以单个字符串数组作为参数的构造函数。数组的元素将是句子中的单词

重写对象类中提供的继承toString()的toString()方法。这将返回一个由句子中的所有单词组成的字符串,按单词的顺序用空格分隔

一个方法shortest(),它返回一个包含句子中最短单词的字符串。(如果有多个最短单词,则返回其中一个)

一个方法,longest(),它返回一个包含句子中最长单词的字符串。(如果有多个最长单词,则返回其中一个)。 返回句子中单词的平均长度的方法meanLength()

一种方法sorted(),它返回按字符串数组中字母顺序排序的句子中的单词。此方法不应修改数组字。 我的代码是:

import java.util.Arrays;

public class Sentence {
    private String[] words;

public Sentence(String[] words) {
        this.words = words;
    }

   public String toString() {
        String sentence = "";
        for (String word : words) sentence += word + " ";

        return sentence;
    }

    public String shortest() {
        String shortString = words[0];

        for (String string: words) {
            if (string.length() < shortString.length()) {
                shortString = string;
            }
        }

        return shortString;
    }

    public String longest() {
        String longString = words[0];

        for (String string: words) {
            if (string.length() > longString.length()) {
                longString = string;
            }
        }

        return longString;
    }

    public double meanLength(){
        String[] strArray = Arrays.toString(words).split(" ");
        int numWords = words.length;
        int totalCharacters = 0;
        for(int i = 0; i < numWords; i++)
             totalCharacters = totalCharacters + words[i].length();

        return totalCharacters/numWords;
    }

    public String[] sorted(){
        Arrays.sort(words);
        return words;
    }

    public static void main(String[] args) {
          String[] wordList = {"A", "quick", "brown", "fox", "jumped", "over", "the", "lazy", "dog"};
          Sentence text = new Sentence(wordList);
          System.out.println(text);
          System.out.println("Shortest word: " + text.shortest());
          System.out.println("Longest word: " + text.longest());
          System.out.printf("Mean word length:%5.2f\n",text.meanLength());
          String[] sortedText = text.sorted();
          System.out.print("Sorted: " + Arrays.toString(sortedText)); 
        }
}
导入java.util.array;
公判{
私有字符串[]字;
公开句(字符串[]字){
这个单词=单词;
}
公共字符串toString(){
字符串句子=”;
for(字符串词:words)句子+=单词+“”;
返回判决;
}
公共字符串最短(){
String shortString=单词[0];
for(字符串:单词){
if(string.length()longString.length()){
长字符串=字符串;
}
}
返回长串;
}
公共双平均长度(){
String[]strArray=Arrays.toString(words).split(“”);
int numWords=words.length;
整数totalCharacters=0;
for(int i=0;i

我认为我的toString方法不正确,我的平均字长也不正确。有人能给我解释一下实施这两种方法的正确方法吗?谢谢:)。

我看不出您的
toString
方法有任何问题。但是,如果您打算在
meanLength
中返回一个double,则应在任何除法之前将int转换为double。i、 e.
totalCharacters/numWords
应为(双)totalCharacters/(双)numWords`@CalvinP。谢谢你,嗯,我认为toString方法有问题,因为我必须创建数组的副本,这样当排序发生时,原始数组不会受到影响。只是关于性能的提示。在toString方法中,我建议使用StringBuilder来构造句子。
+
运算符导致大量字符串复制。实际上,我没有看到任何地方您试图使用
语句。toString
。您似乎总是调用
array.toString