黑马程序员技术交流社区
标题:
统计字母,空格,数字,和其他字符
[打印本页]
作者:
hsx500
时间:
2015-5-8 11:06
标题:
统计字母,空格,数字,和其他字符
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
我看到了第八天,毕老师的视频里好像没说怎么遍历String类里的字符啊?有人知道用java怎么解吗?
作者:
飒飒
时间:
2015-5-8 14:26
标题:
把基础全部看完你就应该懂了
本帖最后由 飒飒 于 2015-5-8 14:27 编辑
public class FoundCharCount {
/**
* 输入字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
*
* @param args
*/
public static void main(String[] args) {
System.out.println("请输入字符串:");
Scanner sc = new Scanner(System.in); //通过键盘输入字符串
String line = sc.nextLine();
foundCharCount(line);
}
private static void foundCharCount(String line) {
char[] arr = line.toCharArray(); //把字符串转换成字符数组
TreeMap<Character, Integer> map = new TreeMap<Character, Integer>(); //定义一个map集合用来存储字符并统计字符出现次数
for (Character ch : arr) {
map.put(ch, map.containsKey(ch) ? map.get(ch) + 1 : 1);
}
for (Character ch : map.keySet()) {
if((int)ch == 9) //tab键对应的值是9
System.out.println("\\t"+":::"+map.get(ch));
else if((int)ch == 32) // 空格键对应的是32
System.out.println("空格"+":::"+map.get(ch));
else
System.out.println(ch + ":::" + map.get(ch));
}
}
}
作者:
快乐Anne
时间:
2015-5-8 14:49
先转换为字符数组,再遍历
作者:
Cat
时间:
2015-5-8 19:46
学习一下~
作者:
showdy
时间:
2015-5-9 19:09
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;
/*
* 1..电脑D盘下a.txt文件中有一行文字(含英文和数字),文件密码为“heima”,请从控制台输入密码,读取文件,
*并将文件中的字母 统计后打印在控制台上,打印格式:a:2个;b:3个....
*/
public class Heima_01 {
public static void main(String[] args) {
// 创建Map集合,存储字母及其个数
TreeMap<Character, Integer> tm = new TreeMap<Character, Integer>();
// 封装件键盘录入数据
Scanner sc = new Scanner(System.in);
System.out.println("请输入文件密码");
String line = sc.next();
// 判断文件密码是否正确
if ("heima".equals(line)) {
BufferedReader br = null;
String lines = null;
try {
// 读取文件,并将文件字符串转成字符数组
br = new BufferedReader(new FileReader("a.txt"));
lines = br.readLine();
char[] chs = lines.toCharArray();
// 遍历Map集合,判断集合中是否含有数组的元素
for (Character key : chs) {
Integer value = tm.get(key);
// 集合不含数组中元素,向集合中添加元素
if (value == null)
tm.put(key, 1);
// 集合中含有此元素,则value值加1
else if (value != null) {
value++;
tm.put(key, value);
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
// 关闭资源
if (br != null)
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
// 定义字符串缓冲区
StringBuilder sb = new StringBuilder();
// 遍历集合,获取集合中key和value值
Set<Character> set = tm.keySet();
for (Character key : set) {
Integer value = tm.get(key);
// 判断key值是否为字母,并将key和value值拼接起来
if ((key >= 'a' && key <= 'z') || (key >= 'A' && key <= 'Z'))
sb.append(key).append(":").append(value).append("个;");
}
// 控制台上输入统计字母数
System.out.println(sb.toString());
}
else{
System.out.println("密码输入不正确");
}
}
}
复制代码
作者:
hsx500
时间:
2015-5-10 12:37
飒飒 发表于 2015-5-8 14:26
public class FoundCharCount {
/**
还是要转成数组啊,我还需要多学学,谢谢~
作者:
as12510
时间:
2015-5-10 13:37
string 字符串会转换成char数组 你遍历数组 挨着比较就可以了。如果满足条件 就 计数器++
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2