查找和比较字符串中单个单词的长度

问题描述:

所以我需要编写一个程序来读取5个单词的句子,并找到句子中最长的单词并显示它。如果碰巧有两个同样大的单词,它只显示第一大单词。查找和比较字符串中单个单词的长度

import java.util.Scanner; 

public class Longest_Word { 

    public static void main(final String[] args) { 
     Scanner in = new Scanner(System.in); 

     String line; 
     String q, w, e, r, t; 

     System.out.print("Enter a five word sentence: "); 
     line = in.nextLine(); 
     Scanner scanner = new Scanner(line); 

     q = scanner.next(); 
     w = scanner.next(); 
     e = scanner.next(); 
     r = scanner.next(); 
     t = scanner.next(); 

     System.out.println(q + " " + r); 
    } 
} 

你或许可以知道我卡在哪里。我真的不知道如何比较这些单词。首先想到的是使用if/else来分别比较它们,使用line.length()。 (不幸的是)不能使用数组,分割或循环。

+0

也许你不应该等到他们都在最后比较..... ;-) – markg

+0

我觉得不可理解你为什么不能使用数组,.split或循环。是否需要一些计算机科学家庭作业?因为在现实世界中,人们会简单地遍历5个字符串变量来确定最长。 – Jireugi

+0

@Jireugi但是没有必要这样的东西......这可能是课程的一部分......如果是1亿字呢? – markg

if/else和loop对于这个问题是相同的。

String largerString = q; 
if(w.length()>largerString.length()) 
{ 
    largerString = w; 
} 
if(e.length()>largerString.length()) 
{ 
    largerString = e; 
} 
if(r.length()>largerString.length()) 
{ 
    largerString = r; 
} 
if(t.length()>largerString.length()) 
{ 
    largerString = t; 
} 
System.out.println(largerString); 
+0

这和Jireugi的回答有很大的帮助。谢谢! – Conf3tti

+0

@ Conf3tti太棒了!那么如果你不介意的话,你可以将其中一个答案标记为正确的。 – Jireugi

+0

@ Conf3tti不客气 –

如果你只是想显示最大的话,你可以做到这一点,如下所示,这将是动态的一样的情况下,单词数大于5

Scanner in = new Scanner(System.in); 

String line; 
String q, w, e, r, t; 

System.out.println("Enter a five word sentence: "); 
line = in.nextLine(); 
Scanner scanner = new Scanner(line); 

String maxWord = ""; 
while(scanner.hasNext()){ 
    String word =scanner.next(); 
    if(word.length()>maxWord.length()) 
     maxWord = word; 
} 
System.out.println(maxWord); 
+2

该问题指出没有循环。 – Aelexe

鉴于我建议的限制你按照你的假设使用if语句。

import java.util.Scanner; 
public class Longest_Word { 

public static void main(String[] args) { 
    Scanner in = new Scanner(System.in); 

    String line; 
    String q, w, e, r, t; 

    System.out.print("Enter a five word sentence: "); 
    line = in.nextLine(); 
    Scanner scanner = new Scanner(line); 

    q = scanner.next(); 
    String longest = q; 

    w = scanner.next(); 
    if (w.length()>longest.length()) 
     longest = w; 

    e = scanner.next(); 
    if (e.length()>longest.length()) 
     longest = e; 

    r = scanner.next(); 
    if (r.length()>longest.length()) 
     longest = r; 

    t = scanner.next(); 
    if (t.length()>longest.length()) 
     longest = t; 

    System.out.println(longest); 
} 
} 

阅读中的所有值列表,并使用Java流找到最长的字符串

String logestStr = list.stream().max(Comparator.comparing(String::length)).get(); 
+0

你可以缩短比较器。 'Comparator.comparing(String :: length)' –

+0

感谢您的指点,我已简化并编辑了答案 – ravthiru

显示你的老师这个!

Stream.generate(scanner::next).limit(5) 
    .max(Comparator.comparing(String::length)) 
    .ifPresent(System.out::println);