A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© simonqian 中级黑马   /  2013-5-12 10:48  /  1825 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 simonqian 于 2013-5-13 08:33 编辑

从键盘输入一行字符,分别统计其中大写字母和小写字母的个数?

6 个回复

倒序浏览
本帖最后由 任江峰 于 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. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
曹睿翔 + 1

查看全部评分

回复 使用道具 举报
通过ASCII码统计,在此这给你思路;
大写A到Z   对应的ASCII码为65到90
小写a到z   对应的ASCII码为97到122
回复 使用道具 举报
String 类下没有这种情况的方法处理。唯一一种能区分大小写的方法也就只能用ASCII表  只有表中的的大小写字母能区分开,用条件式判断字母处于哪个范围。正如楼上说的   A到Z 的范围对应一个数字范围。   a-z又是一个范围。判断字母处于这两个范围中的哪个 就行。
回复 使用道具 举报
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);
        }
}
这个是我写的,你可以看看

评分

参与人数 1技术分 +1 收起 理由
曹睿翔 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
isUpperCase(char ch)
isLowerCase(int codePoint)
根据API文档中输入,一个字符,用chatacter做半段就行吗
回复 使用道具 举报
本帖最后由 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. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马