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