繁体   English   中英

Java(从字母中删除“关键字”)

[英]Java (Removing a 'keyword' from the alphabet)

所以我想从字母中删除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;
}

由于某些原因,当我运行它时,它不会执行,但会一直保持加载状态(鼠标光标显示正在加载动画)。 你们能发现我必须错过的任何错误吗? 谢谢。

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;
}
for (alphabetPosition=0; alphabetPosition<=26; letterPosition++){

您要增加的变量不是初始化的变量。 (实际上,您永远不会增加AlphabetPosition)。

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

letterPosition可能不会比您的字长更好,对吗?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM