黑马程序员技术交流社区
标题:
统计字符串中各个小写字母出现的次数
[打印本页]
作者:
先小涛
时间:
2013-4-20 09:28
标题:
统计字符串中各个小写字母出现的次数
本帖最后由 先小涛 于 2013-4-21 12:17 编辑
输入一串小写字母字符串,统计各个字母的个数,并按如下两个图示打印输出
可以用“*”的个数来表示长度,x和y两方向的直线和箭头可以不必打印输出。
捕获.PNG
(11.4 KB, 下载次数: 8)
下载附件
2013-4-20 09:28 上传
作者:
vicoooo
时间:
2013-4-20 10:03
package test;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;
/**
* 统计字符串相同字符的长度并打印
* @author fjg
*
*/
public class Test {
public static void main(String[] args) {
Scanner input = new Scanner(System.in); //使用Scanner接受从键盘的输入
System.out.println("请输入一段字符:");
String str = input.nextLine(); //从键盘接受输入的数据
Map<Character,Integer> tree = new TreeMap<Character,Integer>();//利用TreeMap来保存某个字符出现的次数
for(int i=0;i<str.length();i++){
char ch = str.charAt(i);
//如果第一次出现,则初始为1
if(!tree.containsKey(ch)){
tree.put(ch, 1);
}
else{
int auto = tree.get(ch)+1; //如果在容器中已存在,则在原来的基础上+1
tree.put(ch, auto);
}
}
// 使用Iterator,方便遍历输出
Iterator<Character> iter = tree.keySet().iterator();
while(iter.hasNext())
{
//获得字符对象信息
char temp = iter.next();
//输出每个字符出现的次数
//System.out.println("字母'"+temp+"' 出现"+tree.get(temp)+"次。");
System.out.print(temp);
for(int i=0;i<tree.get(temp);i++){
System.out.print("*");
}
System.out.println();
}
}
}
复制代码
请输入一段字符:
sadfadsfa
a***
d**
f**
s**
作者:
vicoooo
时间:
2013-4-20 10:51
package test;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;
/**
* 统计字符串相同字符的长度并打印
* @author fjg
*
*/
public class Test {
public static void main(String[] args) {
Scanner input = new Scanner(System.in); //使用Scanner接受从键盘的输入
System.out.println("请输入一段字符:");
String str = input.nextLine(); //从键盘接受输入的数据
Map<Character,Integer> tree = new TreeMap<Character,Integer>();//利用TreeMap来保存某个字符出现的次数
for(int i=0;i<str.length();i++){
char ch = str.charAt(i);
//如果第一次出现,则初始为1
if(!tree.containsKey(ch)){
tree.put(ch, 1);
}
else{
int auto = tree.get(ch)+1; //如果在容器中已存在,则在原来的基础上+1
tree.put(ch, auto);
}
}
// 使用Iterator,方便遍历输出
Iterator<Character> iter = tree.keySet().iterator();
List<Integer> list = new ArrayList<Integer>();
while(iter.hasNext()){
//获得字符对象信息
char temp = iter.next();
System.out.print(temp);
list.add(tree.get(temp));
}
System.out.println();
int max = Collections.max(list);
for(int i=0;i<max;i++){
for(int a=0;a<=list.size();a++){
if(i<a)
System.out.print("*");
}
System.out.println();
}
}
}
复制代码
请输入一段字符:
aaabbc
abc
***
**
*
作者:
vicoooo
时间:
2013-4-20 11:12
上面的有点错误。
System.out.println();
int max = Collections.max(list);
for(int i=1;i<=max;i++){
for(int a : list){
//System.out.print(a);
if(i<=a)
System.out.print("*");
else
System.out.print(" ");
}
System.out.println();
}
复制代码
作者:
vicoooo
时间:
2013-4-20 11:15
vicoooo 发表于 2013-4-20 10:51
请输入一段字符:
aaabbc
abc
代码的自己写才能记住呢。把星号打印到字母上方稍微麻烦一点,不过逻辑是一样的。
作者:
黄玉昆
时间:
2013-4-21 12:16
如果问题未解决,请继续追问,如果问题解决了,请将问题分类改为“已解决”,谢谢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2