码迷,mamicode.com
首页 > 其他好文 > 详细

论坛里面的题目收集

时间:2014-12-03 02:01:20      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:英文字母   package   letters   import   public   

题目:输入一行字符,分别统计出其中数字、英文字母、数字和其他字符的个数


package Test;

import java.io.*;

//需求:输入一行字符,分别统计出其中数字、英文字母、数字和其他字符的个数
public class CountTest {

    public static void main(String[] args) throws Exception {

        System.out.println("请输入一个包含数字、英文字母和其他字符的字符串:");

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String str = br.readLine();

        byte[] buf = str.getBytes();

        int num = 0;

        int letters = 0;

        int others = 0;

        for (int i = 0; i < buf.length; i++) {

            char ch = (char) buf[i];

            System.out.println(ch);

            if (ch >= ‘0‘ && ch <= ‘9‘) {
                num++;
            }
            else if (ch >= ‘a‘ && ch <= ‘z‘) {
                letters++;
            }
            else if (ch >= ‘A‘ && ch <= ‘Z‘) {
                letters++;
            }
            else{
                others++;
            }
        }
        System.out.println("您输入的字符串是:" + str);
        System.out.println("数字有: " + num + " 个,字母有: " + letters + " 个,其他字符有: "
                + others + " 个。");

    }
}


上面这道题目,在判断输入的字符这个过程中,产生不不少问题:

  1. str.getBytes()拿到的是字节byte类型,而从键盘输入进来的确实字符char类型,

    就相当于(byte)‘2‘,根据Unicode编码它直接输出的结果会是50。

    刚开始我没有重新转为字符,就这样判断if (ch >= 0 && ch <= 9),

    50当然不会再0~9之间,所以要有char ch = (char) buf[i];这个转换,

    并且判断条件也是要跟char字符进行比较。


  2. if判断没有写好,刚开始不是用if……else bubuko.com,布布扣if……else去写,导致最后其他字符的数目判断出错。例如:数字1判断完第一个if后,它继续执行,也会others++。

论坛里面的题目收集

标签:英文字母   package   letters   import   public   

原文地址:http://sesedese.blog.51cto.com/9595075/1585652

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!