如何考虑一个以上空间的存在?爪哇

时间:2018-07-15 13:45:05

标签: java eclipse

任务:有一个字符串。计算字符串中的单词数。该单词被认为由空格分隔。 (您不能使用正则表达式

如何解决?如果您连续输入两个或多个空格-会认为这些单词,但是我需要算作单词之间的一大笔钱

示例 I_live_in_Lviv-4个单词,但是如果我们再放一个空格(例如在Lviv之前的示例)-> I_live_in__Lviv-5个单词(而不是下划线,请加一个空格(-s))< / p>

Scanner in = new Scanner(System.in);
String line = in.nextLine();

int n = 0;

if (line.length() != 0) {
    n++;
    for (int i = 0; i < line.length(); i++) {
        if (line.charAt(i) == ' ') {
            n++;
        }
     }
}
System.out.print(n);

答案:

Scanner in = new Scanner(System.in);
String line = in.nextLine();

int count = 0;
for(int i = 0; i <= line.length() - 1; i++){
    if(Character.isLetter(line.charAt(i))){
        count++;
        for( ; i <= line.length() - 1; i++){
            if(line.charAt(i) == ' '){
                i++;
                break;
            }
        }
    } 
}
System.out.print(count);

in.close();

结果:

I_live_in__Lviv_-4

3 个答案:

答案 0 :(得分:0)

因此,据我了解,您有一个字符串,例如“您好,我叫Matthew”,您想查找字符串中有多少个单词。我一次只需要输入两个字符,然后将它们逐个递增,然后测试第一个字符是否为空格,第二个字符是否为空格。所以取“ h”,这就是一个词的开头。然后是“ hi”,不是,依此类推。当然,您需要检查第一个字符是否不是空格,以及是否不增加字数。

编辑:对不起,我没有详细说明,今天早晨我处于时间紧缩状态。使用String.subString(i, i + 2);从字符串中获取两个字符。然后使用subString()或charAt()检查新字符串(我建议使用charAt()),当然要考虑字符串长度-2以防止引发错误。

for (int i = 0; i < exampleString.length - 2; i++) {
//subtract 2 to prevent subString from throwing an error
    if ((exampleString.subString(i, i + 2).charAt(1) = " " && exampleString.subString(i, i + 2).charAt(2) != " ") || i = 0) {
//add 2 to get a space and a letter, then test the first character for a 
//space and the second character for NOT a space, also increment words if 
//i = 0, presuming there is no space at the beginning of the string
        words++;
    }
}

@JB Nizet基本上是这样说的,只是以回答的形式...对不起,直到现在我还没有看到您的评论,我不会输入所有这些信息

答案 1 :(得分:0)

只需再添加一个变量并在其中存储前一个字符。如果返回错误,则检查下一个字符是否为空格。

答案 2 :(得分:0)

Scanner in = new Scanner(System.in);
String line = in.nextLine();

int count = 0;
for(int i = 0; i <= line.length() - 1; i++){
    if(Character.isLetter(line.charAt(i))){
        count++;
        for( ; i <= line.length() - 1; i++){
            if(line.charAt(i) == ' '){
                i++;
                break;
            }
        }
    } 
}
System.out.print(count); //I_live_in__Lviv_ - 4

in.close();