2016-09-15 111 views
0

所以我需要編寫一個程序來讀取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

回答

0

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不客氣 –

0

如果你只是想顯示最大的話,你可以做到這一點,如下所示,這將是動態的一樣的情況下,單詞數大於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

0

鑑於我建議的限制你按照你的假設使用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); 
} 
} 
0

閱讀中的所有值列表,並使用Java流找到最長的字符串

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

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

+0

感謝您的指點,我已簡化並編輯了答案 – ravthiru

1

顯示你的老師這個!

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