2013-11-21 182 views
1

这是我写的代码,用于检查字符串数组中的字符串,并替换保存在另一个字符串数组中的相同位置的字符。在字符串中查找字符

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:

guess = "a" 

预期输出:

_____ _a___a ____ __a____ _a___ 

实际输出T:

_____ ______ ____ _______ _____ 

此外,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) 

任何人谁可以与任何的问题,帮助将不胜感激,这不是功课。

+1

您可以创建[SSCCE?](http://sscce.org/) – Smit

+0

@vandale x是字符串,a是字符位置。 –

+0

String.indexOf(char)将查找字符串中字符的位置。还有另一个版本将从给定的偏移量开始。 –

回答

1

您需要修复,从字符数组转换回字符串循环:你应该去currentGuessArray数组的长度,而不是第一个字符串的长度是:

//Convert chars back to string array 
for (int x = 0; x < currentGuessArray.length ; x++) { 
    currentGuessPhrase[x] = new String(currentGuessArray[x]); 
} 

有了这个修复代码,您的代码工作(demo)。

+0

啊谢谢,修正了一个问题! –

+0

@ModifyYou其实,这是唯一的问题:在演示中检查你的代码。 – dasblinkenlight

+0

我做了一个隔离测试,它在那个环境中工作,但不在我的代码中。什么:/ –

0

是的,它的工作原理像用户dasblinkenlight says.but,我认为我们可以做到这一点,更简单的方法,遵循的是我的代码:

/** 
* @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; 
} 

像this.it工作时,它称为该方法。