この質問は、経験豊かなプログラマーにとっては非常に複雑だとは思わないが、苦しんでいる。 私のようなJavaクラスの前に宣言した区切り文字のリストを持っている:JAVA:区切り文字のセットと同じではない文字列の次の文字のインデックスを決定する方法
public static final String DELIMITERS = ",<.>/?;:'\"[{]}\\|=+-_)(*&^%$#@!`~ \t\n";
を私は2つのパラメータ(開始インデックスと文字列)を受け取るメソッドを作成したいと思います。目的は、文字列を読み取って、上記の区切り文字のリストにない文字に対応する次のインデックスを返すことです。開始インデックスが負の数またはテキストの長さより大きい場合、メソッドは単に-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を返します。すべてのすべてのヘルプははるかになります感謝。また、メソッドisDelimiterは、posNextWord()メソッドでの使用に必要です。
'posNextWord'を呼び出す方法を教えてください。 – nhouser9
' isWord = true;の後に 'break'する必要があると思います。 –
本当にできません。より大きな課題の一部です。このメソッドは、ユーザが入力した行の集合の語数を決定するための第3のメソッドを作成するために、類似のメソッド(posNextDelimiter())を使用するだけです。 – JBarron