【发布时间】:2020-02-12 07:42:47
【问题描述】:
我正在尝试使用与教程相同的代码格式。它将打印最长的单词以及最长单词的长度。导师告诉我,要找到最短的单词,我必须将 if 语句翻转为小于 ('
"最短单词:"",长度:0"
我不知道如何解决这个问题,所以它会寻找一个实际的单词而不是一个空字符。我想在这里遵循相同的逻辑,而不使用数组。
Scanner in = new Scanner(System.in);
System.out.println("Please enter a phrase: ");
String phrase = in.nextLine();
String w = "";
String lw = "";
int l;
char ch;
phrase = phrase + " ";
l = phrase.length();
int i;
for (i=0; i < l; i++) {
ch = phrase.charAt(i);
if(ch != ' ') {
w = w + ch;
} else {
if(w.length() > lw.length()) {
lw = w;
}
w = "";
}
}
System.out.println("Longest Word: \"" + lw + "\", length: "+ lw.length());
【问题讨论】:
-
你显示的代码不可能返回你显示的输出。
-
我忘了添加,用户输入他们选择的任何短语
-
尽管如此,您显示的代码无法生成“最短单词:”,长度:0”作为输出
-
首先,将
lw.length()存储在一个变量中,而不是总是计算它。然后你有一张支票w.length() > lwLength。如果你把它弄错了,这是一个很好的第一步——但为了让它发挥作用,最长的单词需要以短的开头并随着你找到更好的候选者而变长,而最短的单词需要以 long 开头并且剪短短。以lwLength = Integer.MAX_VALUE开头。 -
我同意@Stultuske。
System.out.println("Longest Word: \"" + lw + "\", length: "+ lw.length());怎么会突然产生"Shortest Word: "", length: 0"的输出?
标签: java string loops if-statement