一个关于java的小问题。

P:使用键盘输入一个字符串,编写程序统计这个字符串中的字母,空格和数字的个数。

----------下面是我写的代码

package cheng;
import java.io.*;
import java.util.*;
import javax.swing.*;
public class Test02 {
public static String inputS() throws IOException{
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入字符串:");
String str =buf.readLine();
return str;

    }
    public static void main() throws IOException{
        int letter=0,space=0,num=0;
        String  s   = inputS();
        for(int i=0;i<s.length();i++){
            if(('a'<=s.charAt[i] && s.charAt[i]<='z') || (s.charAt[i]>='A' && s.charAt[i]<='Z'))
                letter++;
            else if(s.charAt[i]==' ')
                space++;
            else if(0-<=s.charAt[i] &&s.charAt[i]<=9)
                num++;
        }
        System.out.println("字母的个数为:"+letter);
        System.out.println("空格的个数为:"+space);
        System.out.println("数字的个数为:"+num);
    }

}

然后charAt为什么会报错。不明白为什么。

楼主你好,一看就是刚开始学java,这里面错的太多了,你自己对着看吧,我给你改好了,望采纳。
import java.io.*;
import java.util.*;
import javax.swing.*;
public class Test02 {

public static String inputS() throws IOException{
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入字符串:");
String str =buf.readLine();
return str;

}
public static void main(String[] args) throws IOException{
    int letter=0,space=0,num=0;
    String  s   = inputS();
    for(int i=0;i<s.length();i++){
        if(('a'<=s.charAt(i) && s.charAt(i)<='z') || (s.charAt(i)>='A' && s.charAt(i)<='Z'))
            letter++;
        else if(s.charAt(i)==' ')
            space++;
        else if('0'<=s.charAt(i) &&s.charAt(i)<='9')
            num++;
    }
    System.out.println("字母的个数为:"+letter);
    System.out.println("空格的个数为:"+space);
    System.out.println("数字的个数为:"+num);
}

}

字符不可以直接比较大小吧,charat是单个字符

最后一个else if的判断条件有问题

public static void main() throws IOException{
int letter=0,space=0,num=0;
String s = inputS();
for(int i=0;i if(('a'='A' && s.charAt[i]<='Z'))
letter++;
else if(s.charAt[i]==' ')
space++;
else if(0-<=Intege.valueOf(String.valueOf(s.charAt[i])) &&Intege.valueOf(String.valueOf(s.charAt[i]))<=9)
num++;
}
System.out.println("字母的个数为:"+letter);
System.out.println("空格的个数为:"+space);
System.out.println("数字的个数为:"+num);
}

楼上 可爱的白萝卜 是正解,你最后一个else if 出问题 ,注意一下,你获取的是一个字符串,虽然统计的是数字,但是charAt访问的是字符,而不是数字,

我又改了代码 试过了 可以的

public static void main(String[] args) throws IOException {
int letter = 0, space = 0, num = 0;
String s = inputS();
for (int i = 0; i < s.length(); i++) {
if (('a' <= s.charAt(i) && s.charAt(i) <= 'z')
|| (s.charAt(i) >= 'A' && s.charAt(i) <= 'Z'))
letter++;
else if (s.charAt(i) == ' ')
space++;
else if (0 <= Integer.valueOf(String.valueOf(s.charAt(i))) && Integer.valueOf(String.valueOf(s.charAt(i))) <= 9)
num++;
}
System.out.println("字母的个数为:" + letter);
System.out.println("空格的个数为:" + space);
System.out.println("数字的个数为:" + num);
}

public static String inputS() throws IOException {
    BufferedReader buf = new BufferedReader(
            new InputStreamReader(System.in));
    System.out.println("请输入字符串:");
    String str = buf.readLine();
    return str;
}