在字符串中查找字符

时间:2013-11-21 00:32:51

标签: java arrays converter

这是我编写的代码,用于检查字符串数组中的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)

任何能够帮助解决这两个问题的人都会非常感激,这不是作业。

2 个答案:

答案 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;
}

喜欢这个。它在调用方法时有效。