黑马程序员技术交流社区

标题: 从键盘录入一个字符串,统计该串中有大写字母、小写字母、数字各有多少个 [打印本页]

作者: 袁月明    时间: 2015-7-16 23:42
标题: 从键盘录入一个字符串,统计该串中有大写字母、小写字母、数字各有多少个
看到题目的时候没有什么思路,也不知道用什么样的方法去写,每次去找API,写过之后就忘记了,怎么办呀,看程序可以看懂,就是自己不会写,新人求指导:)
作者: 叶顺达    时间: 2015-7-17 00:32
关于键盘录入--在使用键盘录入时先输入int类型再输入String... http://bbs.itheima.com/thread-214637-1-1.html (出处: 黑马程序员IT技术论坛)
作者: 以梦为码    时间: 2015-7-17 00:53
我先说下我的思路:
录入后,1、用循环输出各个字符值
             2、判断是大小写字母和数字
             3、如果在某个范围(比如大写字母),计数器++;
也不知道对不对。你可以试着做一下

作者: 嘟嘟嘟嘟嘟    时间: 2015-7-17 11:53
我的想法:通过Asci码值来进行判断
1. 将输入的值转为char数组
2. 将数组中值一个一个提取出,将其强制转换为int的值,这个值就是Asci值
3. 用取得的值进行判断,知道它是什么类型的

代码:(我还没学键盘输入输出,直接用一个str代替,方法是一样的:

  1. public class AnsiTest {
  2.         public static void main(String[] args) {
  3.                 String str = "sAdfe15809";
  4.                 getAsciNum(str);
  5.         }
  6.         public static void getAsciNum(String str){
  7.                 int num = 0;//数字计数
  8.                 int capital = 0;//大写计数
  9.                 int lowerCase  =0;//小写计数
  10.                 char[] c = str.toCharArray();//转为char数组
  11.                 //逐个提取出char数组中的值进行判断
  12.                 for (int i = 0; i < c.length; i++) {
  13.                         //通过asci编码值进行判断
  14.                         if((int)c[i]>=48 && (int)c[i]<=57)
  15.                                 num++;
  16.                         if((int)c[i]>=65 && (int)c[i]<=90)
  17.                                 capital++;
  18.                         if((int)c[i]>=97 && (int)c[i]<=122)
  19.                                 lowerCase++;
  20.                 }
  21.                 System.out.println("数字:"+num+";大写字母:"+capital+";小写字母:"+lowerCase);
  22.         }
  23. }
复制代码

作者: pi408637535    时间: 2015-7-17 12:15
把字符串挨个取出来,然后按照ascii的值转换成 大小写,数字。 你写的代码太少了,多写代码。Java不难
作者: 袁月明    时间: 2015-7-19 23:47
pi408637535 发表于 2015-7-17 12:15
把字符串挨个取出来,然后按照ascii的值转换成 大小写,数字。 你写的代码太少了,多写代码。Java不难 ...

恩恩,的确是这样,谢谢,代码堆成山等我去敲了:'(
作者: 袁月明    时间: 2015-7-19 23:48
嘟嘟嘟嘟嘟 发表于 2015-7-17 11:53
我的想法:通过Asci码值来进行判断
1. 将输入的值转为char数组
2. 将数组中值一个一个提取出,将其强制转换为 ...

谢谢指导:)
作者: 女神    时间: 2015-11-3 00:16
是不是还有一种方法?
作者: 雨来    时间: 2016-1-7 20:35
嘟嘟嘟嘟嘟 发表于 2015-7-17 11:53
我的想法:通过Asci码值来进行判断
1. 将输入的值转为char数组
2. 将数组中值一个一个提取出,将其强制转换为 ...

这种方法就可以啊
作者: 雨来    时间: 2016-1-7 20:49
袁月明 发表于 2015-7-19 23:48
谢谢指导:)

转换成字节数,不用强转 比较的时候会自动查码表的

作者: 放养的饼干    时间: 2016-1-7 22:10
有思路就好,就是计数器思想嘛,一串字符转换成字符数组,遍历判断,查API中。。。
作者: 擎天柱    时间: 2016-1-8 00:30
关于String的操作,多加练习。这种问题既可以自己写方法,也可以用已有的方法。熟能生巧!!!
作者: jidan    时间: 2016-1-8 00:58
charat也可以解决问题




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