循环打印只有第一个字

时间:2016-08-07 23:55:00

标签: java

我正在开发一个软件测试课程。我需要创建一个迭代字符串的循环,以便找到一个特定的单词,然后将其与预期的结果进行比较。我遇到的问题是我的循环只打印出字符串的第一个单词。我不能为我的生活弄清楚我做错了什么。请帮忙。

这是我的代码:

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 = "";
    }
}

3 个答案:

答案 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 
 }