黑马程序员技术交流社区

标题: 又一个问题 [打印本页]

作者: danielzyj    时间: 2014-4-16 13:16
标题: 又一个问题
本帖最后由 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

作者: 霍振鹏    时间: 2014-4-16 13:32
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);
        }

}

作者: Ricky_Nick    时间: 2014-4-16 13:33
亲,你看异常提示是脚标越界。你的循环体限制条件里从0到Str.length(),最后一次越界了,把等号去掉就可以了。你试试看行不行。:)
作者: xtxiaolu    时间: 2014-4-16 16:29
角标越界异常
作者: sheng6699    时间: 2014-4-17 10:05
    for (int i = 0;i<=Str.length() -1; i++)  要string.length()-1。
作者: ⒈心只霸占沵    时间: 2014-4-17 10:46
索引最大值为str.length()-1   怎么可以等于str.length呢,当然会越界




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