这是我编写的代码,用于检查字符串数组中的String是否替换另一个String数组中保持相同位置的字符。
char[][] currentGuessArray = new char[currentGuessPhrase.length][];
for (int x = 0; x < currentGuessPhrase.length; x++) {
currentGuessArray[x] = currentGuessPhrase[x].toCharArray();
}
for (int x = 0; x < correctPhrase.length; x++) {
for (int a = 0; a < correctPhrase[x].length(); a++) {
if (correctPhrase[x].charAt(a) == guess) {
currentGuessArray[x][a] = guess;
}
}
}
//Convert chars back to string array
for (int x = 0; x < currentGuessArray[x].length - 1; x++){
currentGuessPhrase[x] = new String(currentGuessArray[x]);
}
对于示例运行:这些是currentPhrase
(5个条目)的值:
sunny banana noun trained named
变量猜测:
guess = "a"
预期产出:
_____ _a___a ____ __a____ _a___
实际输出:
_____ ______ ____ _______ _____
另外,for (int x = 0; x < currentGuessArray[x].length - 1; x++){
抛出:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
at a.updateGuess(a.java:97)
at a.main(a.java:110)
任何能够帮助解决这两个问题的人都会非常感激,这不是作业。
答案 0 :(得分:1)
您需要修复从字符数组转换回字符串的循环:您应该转到currentGuessArray
数组的长度,而不是其中第一个字符串的长度:
//Convert chars back to string array
for (int x = 0; x < currentGuessArray.length ; x++) {
currentGuessPhrase[x] = new String(currentGuessArray[x]);
}
有了这个修复程序,您的代码就可以运行(demo)。
答案 1 :(得分:0)
是的,它像用户dasblinkenlight说的那样工作。但是,我认为我们可以做到这一点,更简单的方法,遵循我的代码:
/**
* @param arr input array.
* @param searchString search string.
* @param replaceString replace string.
* @return replace of the string later,got the modified array.
*/
public static String searchString(String [] arr, String searchString, String replaceString) {
String result = "";
for (int i = 0; i < arr.length; i++) {
// search string whether or not exist.
boolean isExist = arr[i].contains(searchString);
if (!isExist) {
continue;
}
// replace string.
arr[i] = arr[i].replaceAll(searchString, replaceString);
}
for (int i = 0; i < arr.length; i++) {
result += arr[i] + (i != arr.length - 1 ? " " : "");
}
return result;
}
喜欢这个。它在调用方法时有效。