字符串长度()比较不正常
问题描述:
public class LongWord {
public static void main(String args[]) {
String text = "my brother is taller than [email protected] I always a short man,but smart than him";
// Find the longest word in the String
String[] words = text.split("\\s");
String longestWord = "";
for (int i = 1; i < words.length; i++) {
int firstLen = words[i - 1].length();
int secondLen = words[i].length();
if (firstLen <= secondLen) {
longestWord = words[i];
}
}
System.out
.println("===================================================\nLongest Word:::: \n");
System.out.println(longestWord);
}
}
//这是查找语句中最长单词的示例程序。所以输出应该是“me @ 1233334”这个词。但我得到的是“人,但”字作为输出。任何人都可以请帮助我什么是错误的程序。字符串长度()比较不正常
答
你的方法没有找到字符串数组最大的字符串。它查找字符串数组中的最后一个字符串,它比它之前的字符串大。
您的比较(firstLen <= secondLen)
不会比较任何字符串与当前最长的字符串。主循环应该是:
String longestWord = words[0];
for(String word : words) {
if(word.length() > longestWord.length()){
longestWord = word;
}
}
您还可以使用for(int i = 0; i < words.length(); i++)
和使用words[i]
代替(String word : words)
和word
答
决定最长单词的逻辑是错误的。
您正在比较一个“单词”(在这种情况下,单词是指以空格分隔的东西)与前一个单词,如果它更长,现在是最长的。
男人,但被选中,因为它只是比它的前一个字(短)更长。请注意,没有任何东西,但选择,因为之后没有任何单词比他们以前的单词长
答
你做错了。你是不是比较,如果secondLen
比longestWord
大,它实际上应该是:
longestWord = words[0];
for (int i = 1; i < words.length; i++) {
int longestLen = longestWord.length();
int secondLen = words[i].length();
if (longestLen <= secondLen) {
longestWord = words[i];
}
}
用钢笔执行你的算法,在peper,写在每一步中每个变量的值。你有一个基本的逻辑思想。 –
特别关注你正在比较的单词的长度。 – GhostCat
你可能想看看另一个名为StringTokenizer的java类。有了它,您可以指定使用哪些分隔符,如空格和逗号。 – Alan