任務是創建一個名爲Sentence的類,它將用來表示一個英文文本的句子。它應該具有以下功能:toString方法在我的程序中不正確
一個私有實例變量,字符串數組類型的單詞,包含組成該句子的單詞。
具有單個字符串數組作爲參數的構造函數。數組的元素將成爲句子中的單詞。
重寫Object類中提供的繼承的toString()的toString()方法。這應該返回由單個空格分隔的句子中所有單詞組成的單個字符串,它們按照單詞的順序排列。
一個shortest()方法,返回一個包含句子中最短單詞的字符串。 (如果有多個最短的單詞,則返回其中的一個)。
一個方法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方法是正確的,也不是我的平均字長。有人可以向我解釋實施這兩種方法的正確方法嗎?謝謝 :)。
我沒有看到你的'toString'方法有什麼問題。但是,如果你打算在'meanLength'中返回一個double,你應該在任何除法之前將int賦值爲2。即'totalCharacters/numWords'應該是(double)totalCharacters /(double)numWords' –
@CalvinP。感謝你,恩,我認爲toString方法有問題,因爲我必須創建一個數組副本,所以當排序發生時,oirignal數組不會受到影響。 – Leonardo
只有關於性能的提示。在你的toString方法中,我建議使用StringBuilder來構造句子。 '+'操作符會導致大量的字符串複製。 –