0

所以我想从字母表中删除 modifiedKeyword (PLAIN_ALPHA 用作常量)

private String removeKeyword(String modifiedKeyword){
  int wordLength = modifiedKeyword.length();
  int letterPosition;
  int alphabetPosition;
  String modifiedAlphabet = "";
  final String PLAIN_ALPHA = "bcdefghijklmnopqrstuvwxyz";
  for (alphabetPosition=0; alphabetPosition<=26; letterPosition++){
    boolean shouldBeDeleted = false;
    char alphabetLetter = PLAIN_ALPHA.charAt(alphabetPosition);
    for (letterPosition=0; letterPosition>wordLength; letterPosition++){
      char keywordLetter = modifiedKeyword.charAt(letterPosition);
      if (alphabetLetter == keywordLetter) { shouldBeDeleted = true;}
      modifiedAlphabet += alphabetLetter;
    }



  }

  return modifiedAlphabet;
}

出于某种原因,当我运行它时,它不会执行,而是会一直加载(鼠标光标显示加载动画)。你们能发现我必须错过的任何错误吗?谢谢。

4

3 回答 3

2
for (alphabetPosition=0; alphabetPosition<=26; letterPosition++){

您永远不会增加计数器变量alphabetPosition,因此您的代码将在无限循环中运行。

编辑:

还有一种更简单的方法可以使用String#replaceAll(,String, String)

private String removeKeyword(String modifiedKeyword){
    final String PLAIN_ALPHA = "bcdefghijklmnopqrstuvwxyz"; //try to extract this as a constant for cleaner code
    String result = PLAIN_ALPHA.replaceAll(modifiedKeyword, "");

    return result;
}
于 2013-08-12T09:31:29.640 回答
1
for (alphabetPosition=0; alphabetPosition<=26; letterPosition++){

您正在增加另一个变量而不是您初始化的变量。(事实上​​,您永远不会增加AlphabetPosition)。

for (letterPosition=0; letterPosition>wordLength; letterPosition++){   

letterPosition 可能不会比你的字长更好,对吧?

于 2013-08-12T09:34:41.640 回答
0

当这些事情发生时,您应该始终仔细检查您的循环,这很可能是一个无限循环。alphabetPosition在您的情况下始终为 0,永远不会达到 27:

for (alphabetPosition=0; alphabetPosition<=26; letterPosition++){
于 2013-08-12T09:31:42.863 回答