2015-12-07 25 views
-2

好的,我的代码应该打印输入的单词总量,最长和最短的单词。我似乎无法弄清楚如何让它打印出最短的单词,总的和最长的工作。我似乎无法让我的程序打印最短的单词

public void stringInput() 
{ 
    Scanner keyboard = new Scanner(System.in); 
    int wordcount =0; 
    String word =""; 
    String longest = ""; 
    String shortest = ""; 
    while(! word.equals("DONE")) 
    { 
     System.out.print("Please enter a word or DONE to exit: "); 
     word = keyboard.next(); 
     if(!word.equals("DONE")) 
     { 
      wordcount ++; 
      if (word.length() < shortest.length()) 
       { 
       shortest = word; 
       } 
      if (word.length() > longest.length()) 
      { 
       longest = word; 
      } 
     } 
    } 
    System.out.println("Thank you for entering "+wordcount+" words."); 
    System.out.println("Longest word :"+ longest); 
    System.out.println("Shortest word :"+ shortest); 
} 

回答

3

无字比""较短,所以shortest永远不会改变。一种修复方法是将shortest设置为第一个词,而不是""。另一种方法是更改​​if,以便如果该词较短或shortest的长度仍为零,则它将设置为shortest

另一种可能性:

 if ((wordcount == 1) || (word.length() < shortest.length())) 
     { 
      shortest = word; 
     } 
+0

所以我会用字替换“”? – TheCompile

+0

您可以通过我建议的三种方式(或者augustoccesar建议的方式)来解决这个问题。但是,如果根本没有词语,用词替换“”将不起作用。 –

+0

我很困惑,为什么你使用wordcount,如果只是加入了输入的单词总量? – TheCompile

0

无字会比一个空字符串短。您应该设置最短为null并检查它是否是第一个输入的字符串,如果是,请将其设置为最短,然后检查与第一个字符串比较的所有其他字符串。 像这样:

while(! word.equals("DONE")) 
{ 
    System.out.print("Please enter a word or DONE to exit: "); 
    word = keyboard.next(); 
    if(!word.equals("DONE")) 
    { 
     if(shortest != null){ 
      if (word.length() < shortest.length()) 
      { 
       shortest = word; 
      } 
     }else{ 
      shortest = word; 
     } 
     if (word.length() > longest.length()) 
     { 
      longest = word; 
     } 
     wordcount ++; 
    } 
} 
+0

我试着将它设置为null,但它不会运行 – TheCompile

+0

但是解决方案并不是简单的将最短设置为null。在比较之前,你必须检查字符串是否是第一个字符串。去更新我的答案。 – augustoccesar

相关问题