【发布时间】:2017-02-24 04:17:18
【问题描述】:
我认为这个问题对于有经验的程序员来说并不复杂,但我对它很陌生,所以我很挣扎。 我有一个在 java 类之前声明的分隔符列表:
public static final String DELIMITERS = ",<.>/?;:'\"[{]}\\|=+-_)(*&^%$#@!`~ \t\n";
我想创建一个带有两个参数(一个起始索引和一个字符串)的方法。目标是通读字符串并返回与不在上面给出的分隔符列表中的字符相对应的下一个索引。如果起始索引是负数或大于文本长度,则该方法应简单地返回 -1。否则它只返回不在分隔符列表中的下一个字符的索引。 这是我目前所拥有的:
public static boolean isDelimiter(char c) {
String letter = "" + c;
if(DELIMITERS.contains(letter)){
return true;
}
else{
return false;
}
}
public static int posNextWord(int startPosition, String text) {
boolean isWord = false;
int nextWordPosition = 0;
if(startPosition < 0 || startPosition > (text.length()-1)){
return -1;
}
else{
while(isWord = false) {
for (int i = startPosition; i < text.length(); i++) {
if(!isDelimiter(text.charAt(i))){
nextWordPosition = nextWordPosition + i + startPosition;
isWord = true;
}
else{
isWord = false;
}
}
}
return nextWordPosition;
}
}
}
但是,当我使用示例文本和索引运行该程序时,该方法只返回数字 0。任何帮助都将不胜感激。另外,在 posNextWord() 方法中使用 isDelimiter 方法是必需的。
【问题讨论】:
-
显示你调用
posNextWord的主要方法 -
我认为你需要在
isWord = true;之后break -
我真的不能;这是一项更大任务的一部分。此方法只是与类似方法 (posNextDelimiter()) 一起使用,以便创建第三种方法来确定用户输入的一组行的字数
-
注意
while (isWord = false);那应该是==,但在这种情况下,您根本不需要while循环。如果确实需要while循环,while (!isWord)会更好。
标签: java string count delimiter word