java - 如何考虑多个空格的存在?爪哇
问题描述
任务:有一个字符串。计算字符串中的单词数。这个词被认为是用空格分隔的。(不能使用正则表达式)
怎么解决?如果您连续输入两个或多个空格 - 会考虑这些单词,但我需要算作单词之间的一个大通道
示例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
解决方案
因此,据我了解,您有一个字符串,例如“嗨,我的名字是 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 所说的,只是以回答的形式......对不起,我直到现在才看到你的评论,我不会输入所有这些
推荐阅读
- r - 如何将多个参数传递给R中的函数?
- python - 有没有办法为 DataFrame 的某些部分选择内部 True 值?
- visual-studio-code - 如何增加 Visual Studio Code 中的工作空间?
- c++ - 如何制作一个宏来生成具有目标类成员的方法?
- python - Python - 取一个 int 变量并用浮点数对其进行计时?
- c++ - 如何调试发布
- javascript - 从 Redux 中间件添加到状态
- selenium - 是否可以使用页面名称保存图片?
- python - 一次在多组图像上批量执行(ffmpeg)命令[新手]
- python - Python - 如果项目高于某个值,则删除行并在其他值之间替换