欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > java >内容正文

java

java中scanner与hashmap_Java中HashMap的使用练习

发布时间:2025/3/15 java 42 豆豆
生活随笔 收集整理的这篇文章主要介绍了 java中scanner与hashmap_Java中HashMap的使用练习 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

问题:

给定任意一个字符串“today is a special day”,长度为任意,要求找出其出现次数最多的字符及计算次数。(可以用HashMap,HashSet,Collections实现)

解决:利用HashMap和HashSet解决。

代码:

import java.util.HashMap;

import java.util.HashSet;

import java.util.Iterator;

import java.util.Scanner;

import java.util.Set;

public class HashMapDemo {

/**

* @param args

* @author Wentasy

* @since 2012年4月23日17:36:53

* 给定任意一个字符串“today is a special day”,

* 长度为任意,要求找出其出现次数最多的字符及计算次数。

* (可以用HashMap,HashSet,Collections实现)

*/

public static void main(String[] args) {

countChar();

}

public static void countChar(){

Scanner scan = new Scanner(System.in);//构造输入流

String str = "";//接受从键盘输入的字符串

System.out.println("请输入一行字符串:");

//str = scan.next();//注意:使用next方法如果你输入的字符串包括空格,则你将得到错误的结果

str = scan.nextLine();

HashMap map = new HashMap();//创建HashMap对象

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

Character ch = new Character(str.charAt(i));//截取第i个位置的字符

Integer val = new Integer(1);//记录出现次数的变量

Integer oldVal = map.put(ch, val);//把出现次数放到Map中

//put方法返回与 key 关联的旧值;如果 key 没有任何映射关系,则返回 null。(返回 null 还可能表示该映射之前将 null 与 key 关联。)

if (oldVal != null){

map.put(ch, oldVal + 1);//如果不为空,将加1的旧指放到Map中

}

}

System.out.println(map);//打印存放字符和出现次数的映射关系

int max = 0;//出现次数的最大值

Character ch1 = null;//记录出现次数最多的字符

Set set = new HashSet();//创建Set对象

set = map.keySet();//将Map转为Set对象

Iterator it = set.iterator();//获得Set对象的迭代器

while (it.hasNext()){

Character ch = (Character)it.next();//获取元素

Integer pos = map.get(ch).intValue();//通过Key查找Value

//逐一比较,找出现次数最多的字符和出现次数

if (pos > max){

max = pos;

ch1 = ch;

}

}

//打印结果

System.out.println("字符串" + str + "中出现最多的字符是:" + ch1 + "\n" + "出现次数为:" + max);

}

}

运行效果截图:

遇到的问题说明:

在利用Scanner接收输入的字符串时,有两种方式

str = scan.next();

str = scan.nextLine();

如果采用next方法的话,如果你输入的字符串包括空格,则你将得到错误的结果。

原因如下:

next()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键视为分隔符或结束符;

而nextLine()方法的结束符只是Enter键,即nextLine()方法返回的是Enter键之前的所有字符。

总结

以上是生活随笔为你收集整理的java中scanner与hashmap_Java中HashMap的使用练习的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。