所以我已经更新了我的代码,但是它做的很奇怪。输入两个输入后,它将返回最长和最短以及其余变量。但是,当输入两个以上时,它返回最长的...最大的...但是对于最短的它只返回短于最长的单词,而不是输入的最短的字符串.....
import java.util.Scanner;
public class StringReporting
{
public static void main (String[] args)
{
Scanner in = new Scanner (System.in);
String word ="";
String words = "";
String result ="";
int count = 0;
int shortest = 1;
int longest = 1;
int sumOfLengths = 0;
double averageLength = 0;
String shortestWord = "";
String longestWord = "";
while (!word.equals("x"))
{
count ++;
System.out.println ("Please enter String " + count + ", enter x
to exit: ");
word = in.nextLine();
words += "String " + count + ": " + word + "\n";
sumOfLengths += word.length();
if (word.length()>longest)
{
longest= word.length();
longestWord = word;
}
else if(word.length()> shortest && word.length() < longest)
{
shortest = word.length();
shortestWord = word;
}
}
averageLength = (sumOfLengths-1) / (count-1);
System.out.println ("shortest string entered:
" + shortestWord + ", with a length of: " + shortest);
System.out.println ("longest string entered: "
+ longestWord + ", with a length of: " + longest);
System.out.println (" sum of all lengths: " +
(sumOfLengths-1));
System.out.println ("number of strings: " + count);
System.out.println ("average string length : " + averageLength);
答案 0 :(得分:0)
这听起来像是学校的练习,所以我将在没有明确给出答案的情况下尝试帮助您。
您只需要一个循环,就不必在输入所有单词后再次遍历所有单词。输入“ x”后,应该已经计算出要打印的结果(或者需要进行最小程度的整理,例如计算平均值)。您可以在最后打印几个值,无需将所有值都放入1个字符串中。
如果您需要更多帮助,请随时提问!
答案 1 :(得分:0)
您需要有一个变量max,对于每个输入的单词,请检查其是否大于max,然后将max更改为新单词 和min相同(不要忘了检查min是否仍然是“”,然后将其更改为第一个单词),还需要一个计数器来计算输入的所有单词的长度,并需要一个计数器来计算已经输入的单词数输入以计算最后的平均字长 并将它们输出为字符串1:嘿字符串2:hello world等。 你需要这样做
Words += "String " + counter + ": " + word + "\n";
答案 2 :(得分:0)
else if(word.length()> shortest && word.length() < longest)
{
shortest = word.length();
shortestWord = word;
}
它应该是word.length()<最短,但是最短最初是1,所以它可能不通过它,这就是为什么您应该将最短最初设置为Integer.MAX_VALUE,并且将最长设置为0(如果最长的单词是1字符,它将无法检测到)
而且这个word.length()