编写一个程序,输出一个字符串的大写英文字母数,小写英文字母书以及非英文字母数
public class TestStringCase {
public static void main(String[] args) {
String s = "ABAabb$&^$#BAAb898B#@%aa";
int cU = 0, cL = 0, cO = 0;
for(int i=0; i<s.length(); i++) {
char c = s.charAt(i);

if(c >= 'A' && c <= 'Z') {
cU ++;
} else if( c >= 'a' && c <='z') {
cL ++;
} else {
cO ++;
}
}

System.out.println("大写:" + cU);
System.out.println("小写:" + cL);
System.out.println("其他:" + cO);
}
}
charAt
public char charAt(int index)返回指定索引处的 char 值。索引范围为从 0 到 length() - 1。序列的第一个 char 值在索引 0 处,第二个在索引 1 处,依此类推,这类似于数组索引。 
如果索引指定的 char 值是代理项,则返回代理项值。 
指定者:
接口 CharSequence 中的 charAt
参数:
index - char 值的索引。 
返回:
此字符串指定索引处的 char 值。第一个 char 值在索引 0 处。 
抛出: 
IndexOutOfBoundsException - 如果 index 参数为负或小于此字符串的长度。

这个api文档也没有说 charAt是一个字符与另一个字符的做比较??

解决方案 »

  1.   

    charAt只是获取某个char值 ,不做比较的。
    比较就用> < 之类的操作符
      

  2.   

    charAt(int index) 是返回这个字符串在索引为index的位置上的那个字符
    比如String str = "abcdA";
       char a = str.charAt(0); //字符型变量a 为 'a'
       char b = str.charAt(1); //b 为 'b'
       char c = str.charAt(4); //c 为 'A'
      

  3.   

    与char有关的代码单元与代码点
      

  4.   

    charAt是返回字符串的index处的一个代码单元~大部分情况下是一个字符~不过这个方法不能识别这是不是一个由两个代码单元组成的字符~在这种时候就会返回这个字符的第一个或是第二个代码单元~一个乱码~
      

  5.   

    应该是根据字符的ascii码比较吧
      

  6.   

    lz想问什么呢?如果是charAt用法,api讲的很清楚了啊