检查字符串中的字母

我要求用户输入字符串,我想检查字母或数字,但是我是Java新手。这就是我到目前为止
Scanner scanner = new Scanner(System.in);
String s = scanner.nextLine();

isletter(s);  // a call to the function


 // function
public void isletter(String s)
{

for (int i = 0; i < s.length(); i++)
    if (isLetter(s.charAt(i) ) ) {

  System.out.println(\"is alpha = \" + s);
}

else{


}


}
这是我尝试通过Dos进行编译时遇到的错误
c:\\programming>javac LexemesTokenizer4.java
LexemesTokenizer4.java:62: non-static method isletter(java.lang.String) cannot b
e referenced from a static context
isletter(s);
^
LexemesTokenizer4.java:71: non-static method isletter(java.lang.String) cannot b
e referenced from a static context
isletter(s);
^
LexemesTokenizer4.java:85: cannot find symbol
symbol  : method isLetter(char)
location: class LexemesTokenizer4
        if (isLetter(s.charAt(i) ) ) {
            ^
3 errors

c:\\programming>
我知道这很容易解决吗?     
已邀请:
isLetter
中,
L
应该为小写。 (
l
)。
if (isLetter(s.charAt(i) ) )
   // ^ lowercase 
撇开那个错误,为什么要在循环中递归调用方法“ 6”。     
也许您的意思是使用Character类的isLetter()方法,如下所示:
 if(Character.isLetter(s.charAt(i))){

  }
    
而不是顶部的ѭ8,您应该使用以下方式导入扫描仪:
import java.util.Scanner;
在最上面。     
尝试使用s.matches(\“ [A-Za-z] \”)代替函数isLetter()。 这是一个字符串函数,如果字符串与提供的正则表达式匹配,它将重新运行。 编辑:您将需要更改正则表达式以接受长度大于1的字符串。     
您应该首先将\“ isletter \”定义为静态。 在Java中,将大小写保持在lowerThenUpper上也是一个好习惯。 除此之外,可能还请参阅Zach的答案。     
现在,我假定在main方法中定义了以下代码:
Scanner scanner = new Scanner(System.in);
String s = scanner.nextLine();

isletter(s);  // a call to the function
发生第一次编译错误是因为main方法定义为以下签名:public static void main(String [] args)(在Java 5+中也可以使用varargs)。 这意味着,由于您的静态方法正在调用isletter,因此必须将isletter声明为static-因为它不是静态的,所以它属于类的实例,而不是类本身。静态方法只能调用静态方法,除非它们正在实例上调用方法。就这样 非静态方法isletter(java.lang.String)不能b 从静态上下文引用 表示isletter应该附加一个静态修饰符: 公共静态无效isletter(String s) 下一个错误是相同的。 最后,方法isletter(String s)调用带有字符(char)的方法。您尚未定义isletter(char character)方法,也不是静态方法-因为它是通过静态方法调用的,因此也必须将其设置为静态。 我希望这能回答您有关编译错误的问题。     
方法“ 11”测试字符而不是字符串。确保首先要谈论正确的类型。这只是问题的一部分。首先将您的字符串更改为字符,然后再找我们。 还请记住以下几点:您必须使用以下格式
Character.isLetter(s.charAt(charCount));
这是因为
isLetter()
Character
类的成员方法,而不是
String
类的成员方法。 您必须在开始时使用
Character
,因为您正在使用
Character
类的成员函数。如果您使用a,b之类的对象或任何您的字符变量 它会告诉您该字符变量不能被取消引用。也许这与
isLetter()
是Class方法而不是object Method的事实有关。 至于静态上下文,它必须做一些事情,即您的main方法被声明为静态,而您的其他方法不是。我不能完全向你解释这个 只是一个提示。     
public class Demo {

public static void main(String[] arg) {

    char st[] = { \'o\', \'2\', \'A\', \'b\' };

    for (int i = 0; i < st.length; i++) {
        if (Character.isLetter(st[i])) {
            System.out.println(\"Character At:\" + i + \"\\t\" + st[i]);

        }

        else {
            System.out.println(\"Integer At:\" + i + \"\\t\" + st[i]);

        }
    }

}
} isLetter()方法属于Character数组。     

要回复问题请先登录注册