IndexOfを使用して、文内の文字「the」のすべての出現箇所を検索しようとしています。たとえば、「先日あそこに行った」という文の場合、3が返されます。
最初のインデックスが見つかるまでこれを行うことはできますが、ループの書き方がわかりません。元々、文字列全体を検索するforループがありましたが、指定した文字の出現ではなく、文字列全体の文字長を返していました。単語のすべての出現を見つけるループを作成するにはどうすればよいですか?ありがとうございました。
import Java.util.Scanner;
public class TheFinder
{
public static void main (String[] args)
{
String theString = "";
Scanner enter = new Scanner(System.in);
System.out.println("Please enter a sentence: ");
theString = enter.nextLine();
int counter2 = 0;
theString.indexOf("the");
if (theString.indexOf("the")!= -1)
counter2++;
System.out.printf("The characters 'the' were found %d times", counter2);
System.out.println();
System.out.println("This was programmed by -----");
インデックスを追跡できます。
int index = theString.indexOf("the");
while(index >= 0) {
index = theString.indexOf("the", index+1);
counter2++;
}
あなたは複雑なアプローチを取りました。これを試して:
_int count = str.split("the").length - 1;
_
どうしてもindexOf()
を使用する必要がある場合:
_str = str.toLowerCase();
int count = 0;
for (int i = str.indexOf("the"); i >= 0; i = str.indexOf("the", i + 1))
count++;
_
indexOf(String str)
メソッドは、firstオカレンスのstr
のインデックスを検索します。したがって、allstr
の発生を見つけたい場合は、str
のインスタンスを見つけたら文字列を切り取り、str
内でtheString
をもう一度探すループを実装することをお勧めします。 theString
にはもうありません。これがどのように見えるべきかです、
int index = theString.indexOf("the")
int count = 0;
while(index >= 0 && theString.length() > 0){
count++;
theString = theString.substring(0, index + "the".length());
index = theString.indexOf("the");
}
特にindexOf
を使用したい場合(これは割り当て用だと思います)、再帰的な方法を使用できます。
public static String numMatches (String str, String query) {
int index = str.indexOf(query);
if (index == -1)
return 0;
else
return 1 + numMatches(str.substring(index + query.length), query);
}
indexOf
は2番目の引数を取ることができます 文字列のどこから開始するかを示します。したがって、最初のオカレンスを見つけたら、そのインデックスの後の文字列のみを検索するようにindexOf
に指示できます。
このコードは機能するはずです:
public static void main(String[] args) {
String theString = "The other day I went over there.";
theString = theString.toLowerCase();
int index = -1;
int count = 0;
while (true) {
index = theString.indexOf("the", index + 1);
if (index == -1) {
break;
} else {
count += 1;
}
}
System.out.printf("The string 'the' was found %d times.\n", count);
// Output:
// The string 'the' was found 3 times.
}
これにより、文字列内の文字列の出現回数がチェックされます。
String str = oIn.nextLine();
String st = oIn.nextLine();
int countS = 0;
int index3 = str3.indexOf(st);
while (index >= 0){
index = str.indexOf(st, index+1);
countS++;
}
System.out.println("The number of occurrences of "+st +" in the string " +str3 +" are "+countS);
たぶんあなたはこのようなことをすることができます、あなたはindexOf(String str)を使うことができます
String Word = "We are students of the Department of Informatics. All students should know how to program in Java and C.";
int findit = Word.indexOf("students");
int count = 0;
for(int i=0; i<=findit; i++)
{
findit = Word.indexOf("students" , findit + 1);
count = count + 1;
}
System.out.print(count);