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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© danielzyj 中级黑马   /  2014-4-16 13:16  /  1157 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 danielzyj 于 2014-4-21 16:36 编辑
  1. import java.util.Scanner;
  2. /*
  3. 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

  4. */

  5. class  StrDemo
  6. {
  7.         public static void main(String[] args)
  8.         {
  9.                 int ZiMuNum=0;
  10.                 int KongGeNum=0;
  11.                 int ShuZiNum=0;
  12.                 int QiTaNum=0;
  13.                 Scanner sc = new Scanner(System.in);
  14.                 StringBuffer Str = new StringBuffer(sc.nextLine());
  15.                 for (int i = 0;i<=Str.length() ; i++)
  16.                 {
  17.                         if (Str.codePointAt(i)==32)
  18.                         {
  19.                                 KongGeNum++;
  20.                         }
  21.                         else if(Str.codePointAt(i)>47&&Str.codePointAt(i)<58)
  22.                         {
  23.                                 ShuZiNum++;
  24.                         }
  25.                         else if (Str.codePointAt(i)>64&&Str.codePointAt(i)<123)

  26.                         {
  27.                                 ZiMuNum++;
  28.                         }
  29.                         else
  30.                         {
  31.                                 QiTaNum++;
  32.                         }
  33.                 }
  34.                 System.out.print("字母个数"+ZiMuNum+"空格个数"+KongGeNum+"数字个数"+ShuZiNum+"其他字符个数"+QiTaNum);
  35.         }

  36. }
复制代码


QQ截图20140416131449.png (10.32 KB, 下载次数: 15)

QQ截图20140416131449.png

5 个回复

倒序浏览
import java.util.Scanner;
/*
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

*/

class  StrDemo
{
        public static void main(String[] args)
        {
                int ZiMuNum=0;
                int KongGeNum=0;
                int ShuZiNum=0;
                int QiTaNum=0;
                Scanner sc = new Scanner(System.in);
                StringBuffer Str = new StringBuffer(sc.nextLine());
                for (int i = 0;i<Str.length() ; i++)
                {
                        if (Str.codePointAt(i)==32)
                        {
                                KongGeNum++;
                        }
                        else if(Str.codePointAt(i)>47&&Str.codePointAt(i)<58)
                        {
                                ShuZiNum++;
                        }
                        else if (Str.codePointAt(i)>64&&Str.codePointAt(i)<123)

                        {
                                ZiMuNum++;
                        }
                        else
                        {
                                QiTaNum++;
                        }
                }
                System.out.print("字母个数"+ZiMuNum+"空格个数"+KongGeNum+"数字个数"+ShuZiNum+"其他字符个数"+QiTaNum);
        }

}

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

回复 使用道具 举报 1 0
亲,你看异常提示是脚标越界。你的循环体限制条件里从0到Str.length(),最后一次越界了,把等号去掉就可以了。你试试看行不行。:)
回复 使用道具 举报
角标越界异常
回复 使用道具 举报
    for (int i = 0;i<=Str.length() -1; i++)  要string.length()-1。
回复 使用道具 举报
索引最大值为str.length()-1   怎么可以等于str.length呢,当然会越界
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马