我想在輸入的文本中搜索輸入的字母(Ctrl f 演算法)。我想將它找到的字母的索引保留在一個陣列中,然后將該陣列列印到控制臺。我寫了這段代碼,但它不能正常作業。列印輸入文本的長度。我是初學者,我愿意接受批評以優化我的代碼:) 你能幫忙嗎?///
例如;
我的輸入文本:“muammer akca akca”
我的輸入搜索:“ak”
輸出:執行緒“主”java.lang.ArrayIndexOutOfBoundsException 中的例外:Assignment5_2.main(Assignment5_2.java:17) 處的索引 17 超出長度 17 的范圍
預期輸出:
8
13
8 和 13 是“ak”索引
另一個例子:
我的輸入文本:“Sotirios Delimanolis”
我的輸入搜索:“ri”
輸出:執行緒“主”java.lang.ArrayIndexOutOfBoundsException 中的例外:Assignment5_2.main(Assignment5_2.java:17) 處的索引 17 超出長度 17 的范圍
預期輸出:
4
4是“ri”索引號
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Assignment5_2 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String text = scanner.nextLine();
String search = scanner.nextLine();
char[] textArray = text.toCharArray();
char[] searchArray = search.toCharArray();
int i,j;
List<Integer> foundedArray = new ArrayList<Integer>();
boolean foundControl = true;
for (i=0 ; i< textArray.length ; i ){
foundControl = true;
} for (j=0 ; j<searchArray.length ; j ){
if (textArray[i j] != searchArray[j]){
foundControl = false;
break;
}
}
if (foundControl){
foundedArray.add(i);
System.out.println(i);
}
for (i=0;i<foundedArray.size() ; i ){
System.out.println(foundedArray.get(i));
}
}
}
uj5u.com熱心網友回復:
這段代碼應該這樣做。
String input = "akmuammer akca akca";
String test = "ak";
List<Integer> indexes = new ArrayList<>();
int index = -1;
do {
index = input.indexOf(test, index 1);
if (index > -1) {
indexes.add(index);
}
} while (index > -1);
System.out.println(indexes);
我必須更新代碼,以便它計算索引 0 處測驗模式的出現次數。以前的版本會錯過這種情況。
對于當前輸入,它將回傳[0, 10, 15]. 對于 OP 的輸入,它將回傳[8, 13]. 如果沒有找到匹配項,它將簡單地回傳一個空串列。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/422795.html
標籤:
上一篇:加起來等于給定自然數的組合
下一篇:最大封閉磁盤
