我正在开发一个软件测试课程。我需要创建一个迭代字符串的循环,以便找到一个特定的单词,然后将其与预期的结果进行比较。我遇到的问题是我的循环只打印出字符串的第一个单词。我不能为我的生活弄清楚我做错了什么。请帮忙。
这是我的代码:
String input = "Now is the time for all great men to come to the aid of their country";
String tempString = "";
char c = '\0';
int n = input.length();
for(int i = 0; i<n; i++)
{
if(c != ' ')
{
c = input.charAt(i);
tempString = tempString + c;
}
else
{
System.out.println(tempString);
tempString = "";
}
}
答案 0 :(得分:3)
它只打印出第一个单词的原因是,一旦找到空格,你就不会重置c的值,所以if总是为false,并打印出你设置为空字符串的tempString
按照您所写的方式修复代码:
public static void main(String[] args) {
String input = "Now is the time for all great men to come to the aid of their country";
String tempString = "";
char c = '\0';
int n = input.length();
for(int i = 0; i<n; i++)
{
c = input.charAt(i); // this needs to be outside the if statement
if(c != ' ')
{
tempString = tempString + c;
}
else
{
System.out.println(tempString);
tempString = "";
}
}
}
但是......简单地使用内置的字符串方法来做你想要的事情(例如在空格上拆分)要简单得多。您也可以简单地为每个循环使用a,因为split方法返回一个字符串数组:
public static void main(String[] args) {
String input = "Now is the time for all great men to come to the aid of their country";
for (String word : input.split(" ")) {
System.out.println(word);
}
}
答案 1 :(得分:2)
您应该将c
的设置移到<{em>之外 if
。否则,您比较 previous 字符,而不是比较当前字符。
c = input.charAt(i); // <<== Move outside "if"
if(c != ' ')
{
tempString = tempString + c;
}
答案 2 :(得分:0)
考虑使用split
代替
String input = "Now is the time for all great men to come to the aid of their country";
String arr[] = input.split (" ");
for (int x = 0; x < arr.length; x++) {
System.out.println (arr[x]); // each word - do want you want
}