【问题标题】:Trying to determine if a string contains only letters in Java试图确定一个字符串是否只包含Java中的字母
【发布时间】:2013-11-26 21:57:44
【问题描述】:

我的代码如下:

} else if (words.toUpperCase().equals(words)) {
    for (int i = 0; words.length() > i; i++){
      thisLetter = words.charAt(i);
      letter = thisLetter.isLetter();
      if (!letter){
        break;
      }
    }  

letter 是一个布尔值,thisLetter 是一个字符类型(不是字符)。 由于某种原因,我在编译时收到以下错误:

 no suitable method found for isLetter()
method java.lang.Character.isLetter(int) is not applicable
  (actual and formal argument lists differ in length)
method java.lang.Character.isLetter(char) is not applicable
  (actual and formal argument lists differ in length)

【问题讨论】:

  • words.toUpperCase().equals(words) 是什么意思?
  • 必须是大写的“J”吗?
  • 这段代码的重点是判断一个字符串是否全部大写。那段代码会检查这一点,但如果单词中有非字母,它也会返回 true。
  • thisLetter.isLetter() 是错误的。应该是Character.isLetter(thisLetter)

标签: java string loops for-loop char


【解决方案1】:

承租人:

boolean containsOnly = true;
for (int i = 0; i < words.length(); i++) {
    char theChar = words.charAt(i);
    int index = "Java".indexOf(theChar);
    if (index < 0) {
       containsOnly = false;
       break;
    }
}

【讨论】:

    【解决方案2】:

    而不是letter = thisLetter.isLetter();,它返回一个原始char。返回的值会被编译器自动装箱成Character

    Character 没有方法isLetter(),相反,你应该尝试...

    letter = Character.isLetter(thisLetter);
    

    当然,假设thisLetterchar...

    详情请咨询Java Docs

    【讨论】:

    • 成功了,谢谢!但我所做的有什么问题?
    • Character 没有方法isLetter(),它有一个称为static 的方法isLetter(char)
    猜你喜欢
    • 1970-01-01
    • 2013-03-08
    • 2011-07-11
    • 1970-01-01
    • 1970-01-01
    • 2012-01-05
    • 2021-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多