黑马程序员技术交流社区

标题: 关于统计大写字母和小写字母的问题? [打印本页]

作者: simonqian    时间: 2013-5-12 10:48
标题: 关于统计大写字母和小写字母的问题?
本帖最后由 simonqian 于 2013-5-13 08:33 编辑

从键盘输入一行字符,分别统计其中大写字母和小写字母的个数?
作者: 任江峰    时间: 2013-5-12 10:53
本帖最后由 任江峰 于 2013-5-12 11:19 编辑

把读入的字符串转换为字节数组,然后再逐个判断每个字节所在的区间,就可以了。
希望能帮到你。
  1. import java.io.*;
  2. class UperLowerTest
  3. {
  4.         public static void main(String[] args) throws IOException
  5.         {
  6.                 // 创建输入流对象
  7.                 BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  8.                 // 读取一行字符串
  9.         String str = reader.readLine();
  10.                 //将读入的字符串转换为字节数组
  11.                 byte[] b = str.getBytes();
  12.                 //定义两个变量用于大写和小写计数
  13.                 int uperCount=0;
  14.                 int lowerCount=0;
  15.                 for(int i=0; i<b.length; i++)
  16.                 {
  17.                         if(b[i]>='A' && b[i] <='Z')
  18.                         {
  19.                                 //大写计数+1
  20.                                 uperCount++;
  21.                         }
  22.                         if(b[i]>='a' && b[i] <='z')
  23.                         {
  24.                                 //小写计数+1
  25.                                 lowerCount++;
  26.                         }
  27.                 }
  28.                 //输出结果
  29.                 System.out.println("大写字母的个数是:"+uperCount);
  30.                 System.out.println("小写字母的个数是:"+lowerCount);
  31.         }
  32. }
复制代码

作者: hou604720966    时间: 2013-5-12 10:56
通过ASCII码统计,在此这给你思路;
大写A到Z   对应的ASCII码为65到90
小写a到z   对应的ASCII码为97到122
作者: 刘兆华    时间: 2013-5-12 11:05
String 类下没有这种情况的方法处理。唯一一种能区分大小写的方法也就只能用ASCII表  只有表中的的大小写字母能区分开,用条件式判断字母处于哪个范围。正如楼上说的   A到Z 的范围对应一个数字范围。   a-z又是一个范围。判断字母处于这两个范围中的哪个 就行。
作者: 白磊    时间: 2013-5-12 11:24
import java.util.Scanner;


public class Test {

        public static void main(String[] args) {
                Scanner sc=new Scanner(System.in);       //从键盘输入
                String str=sc.next();
                int da = 0;
                int xiao = 0;
                for(int i=0;i<str.length();i++){
                        if('a'<str.charAt(i)&&str.charAt(i)<'z'){      //判断字母的小写                                
                                xiao++;
                        }
                        else if('A'<str.charAt(i)&&str.charAt(i)<'Z'){ //判断字母的大写
                                da++;
                        }
                }
                System.out.println("大写字母数为:"+da+".....");
                System.out.println("小写字母数为:"+xiao);
        }
}
这个是我写的,你可以看看
作者: 仲伟    时间: 2013-5-12 12:13
isUpperCase(char ch)
isLowerCase(int codePoint)
根据API文档中输入,一个字符,用chatacter做半段就行吗
作者: chouwayメ    时间: 2013-5-12 13:51
本帖最后由 chouwayメ 于 2013-5-12 13:55 编辑

思路是:1.复制一个新的str并转成大写;
            2.把两个str都变成字符数组;
            3.比较每个字符,相同的countUp++,不同的countLow++;
  1. public class countCaseTest
  2. {
  3.         public static void main(String[]args)
  4.         {
  5.                 String a="abaEdFSds";
  6.                 count(a);           
  7.         }
  8.         static void count(String a)
  9.         {   
  10.                 int countUp=0,countLow=0;
  11.                 String b=a.substring(0,a.length());
  12.                 b=b.toUpperCase();                    //复制一个新的str并转成大写
  13.                 char[] b1=b.toCharArray();
  14.                 char[] a1=a.toCharArray();          //把两个str都变成字符数组
  15.                 for(int i=0;i<a1.length;i++)
  16.                         {
  17.                                  if(a1[i]==b1[i])countUp++;
  18.                                  else countLow++;
  19.                         }                       //比较每个字符,相同的countUp++,不同的countLow++
  20.                 System.out.println(a+"  UP:"+countUp+" LOW:"+countLow);
  21.         }
  22. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2