首页 > 解决方案 > 如何考虑多个空格的存在?爪哇

问题描述

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

怎么解决?如果您连续输入两个或多个空格 - 会考虑这些单词,但我需要算作单词之间的一个大通道

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

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

标签: javaeclipse

解决方案


因此,据我了解,您有一个字符串,例如“嗨,我的名字是 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 所说的,只是以回答的形式......对不起,我直到现在才看到你的评论,我不会输入所有这些


推荐阅读