Java返回我选择的最长单词,但返回列表中的第一个单词而不是最后一个单词

时间:2018-10-12 21:27:05

标签: java

带有参数的类:

public class TestingLong{                                                                       
  public static String longTest(String s){                                                                          
    String[] longW = s.split(" ");                                      
    String t=" ";                                       

    for(int i=0; i<longW.length; i++){                                      
      if(longW[i].length()>=t.length()){                                        
        t=longW[i];                                     
      }                                     
    }                                                                       
    return t;                                       
  }                                     
}

主类:

public class Main                                       
{                                       
  public static void main(String[] args){                                                                                                                                                   
    System.out.println(TestingLong.longTest("Dogs are just amazing things"));                                                                           
    System.out.println(TestingLong.longTest("Many cats hate dogs who live to bark"));                                       
  }                                     
}

我正在编写一个返回最长单词的代码,但是这样做的确让我感到困惑,为什么在第二个包含许多4个字母单词的语句(“许多猫讨厌活着叫”的狗)中,返回最后一个单词“ bark”,而不返回第一个单词“ many”。我如何能够返回第一个单词?

输出:

Amazing
Bark

1 个答案:

答案 0 :(得分:1)

  

我很困惑,为什么在第二个语句中包含许多4个字母的单词(“很多猫讨厌狗吠的人”),却返回最后一个单词“ bark”而不是第一个单词“ many”

因为在if语句中,您指定长度是否大于或等于 t将被longW[i]覆盖:

if(longW[i].length()>=t.length()){                                        
    t=longW[i];                                     
}   

要解决此问题,请执行以下操作:

if(longW[i].length()>t.length()){                                        
    t=longW[i];                                     
}