查找和比较字符串中单个单词的长度
所以我需要编写一个程序来读取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()。 (不幸的是)不能使用数组,分割或循环。
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);
如果你只是想显示最大的话,你可以做到这一点,如下所示,这将是动态的一样的情况下,单词数大于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);
该问题指出没有循环。 – 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();
你可以缩短比较器。 'Comparator.comparing(String :: length)' –
感谢您的指点,我已简化并编辑了答案 – ravthiru
显示你的老师这个!
Stream.generate(scanner::next).limit(5)
.max(Comparator.comparing(String::length))
.ifPresent(System.out::println);
也许你不应该等到他们都在最后比较..... ;-) – markg
我觉得不可理解你为什么不能使用数组,.split或循环。是否需要一些计算机科学家庭作业?因为在现实世界中,人们会简单地遍历5个字符串变量来确定最长。 – Jireugi
@Jireugi但是没有必要这样的东西......这可能是课程的一部分......如果是1亿字呢? – markg