我的程序中的toString方法不对

时间:2016-02-13 00:27:03

标签: java arrays tostring sentence

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

私有实例变量,类型为String数组的单词,用于保存构成句子的单词。

具有单个String数组作为参数的构造函数。数组的元素将是句子中的单词。

一个toString()方法,它覆盖Object类中提供的继承的toString()。这应该返回一个由句子中的所有单词组成的单个字符串,由单个空格分隔,按照单词中的顺序排列。

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

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

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

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)); 
        }
}

我不认为我的toString方法是正确的,也不是我的平均字长。有人可以向我解释实施这两种方法的正确方法吗?谢谢你:)。

0 个答案:

没有答案