我必须找到字符串中的最后一个单词,并且无法理解为什么我的代码不起作用。这就是我所拥有的:
int i, length;
String j, lastWord;
String word = "We the people of the United States in order to form a more perfect union";
length = word.length();
for (i = length - 1; i > 0; i--)
{
j = word.substring(i, i + 1);
if (j.equals(" ") == true);
{
lastWord = word.substring(i);
System.out.println("Last word: " + lastWord);
i = -1; //to stop the loop
}
}
但是,当我运行它时,它会打印最后一个字母。我知道我可以使用
String lastWord = word.substring(word.lastIndexOf(“”)+ 1)
但我很确定我的老师不希望我这样做。有什么帮助吗?
答案 0 :(得分:4)
您需要在;
之后移除if
才能使其正常运行:
if (j.equals(" ")) // <== No semicolon, and no == true
{
lastWord = word.substring(i);
System.out.println("Last word: " + lastWord);
i = -1; //to stop the loop
}
控制语句中的布尔值也不需要== true
。
最后,制作单字符子串比使用单个字符更昂贵。请考虑使用charAt(i)
代替:
if (word.charAt(i) == ' ') // Single quotes mean one character
{
lastWord = word.substring(i+1);
System.out.println("Last word: " + lastWord);
break; // there is a better way to stop the loop
}
答案 1 :(得分:3)
您已终止if
声明。它应该是,
if(j.equals(" "))
{
...
}
答案 2 :(得分:2)
从;
中取出if (j.equals(" ") == true);
。
您的代码重新制作了清洁工:
String word = "We the people of the United States in order to form a more perfect union";
for (int i = word.length() - 1; i > 0; i--)
if (word.charAt(i - 1) == ' ') {
System.out.println("Last word: " + word.substring(i));
break; // To stop the loop
}
最小迭代次数。
答案 3 :(得分:1)
将字符串转换为char数组,并从数组末尾查找空间。不要忘记使用trim()从末尾删除空格,因为它们可以算作单独的单词。
s = s.trim();
char[] c = s.toCharArray();
for(int i=0; i<c.length; i++)
{
if(c[c.length-1-i]==' ')
{
return s.substring(c.length-1-i);
}
}
return s;
这也涵盖了空字符串的情况。
使用split的另一种选择。
s = s.trim();
String[] strs = new s.split(' ');
return str[str.length-1];
答案 4 :(得分:0)
“if”语句后面的分号表示“什么都不做”。此外,“== true”是多余的。最后,您不希望包含刚刚找到的空间。试试这个:
for (i = length - 1; i > 0; i--)
{
j = word.substring(i, i + 1);
if (j.equals(" "))
{
lastWord = word.substring(i + 1);
System.out.println("Last word: " + lastWord);
i = -1; //to stop the loop
}
}
答案 5 :(得分:0)
有一种方法可以在http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html#split%28java.lang.String%29
分割字符串Splits this string around matches of the given regular expression.
This method works as if by invoking the two-argument split method with the given expression and a limit argument of zero. Trailing empty strings are therefore not included in the resulting array.
一个好的,快速的,更简单的方法是:
word = word.split(" ")[word.length-1];
split()返回基于“”的子字符串数组。由于数组以0开头,因此最后一个元素是数组的长度 - 。