问题:

给定任意一个字符串“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的使用练习相关推荐

  1. java用scanner类_java中关于scanner类的详细介绍

    1.Scanner的实现步骤 第一步:在有效代码的第一行,通过import导入Scanner类!import java.util.Scanner; 第二步:通过new关键字实例化一个Scanner对象 ...

  2. java中scanner意思_java中Scanner s = new Scanner(System.in);分别是什么意思?

    展开全部 Scanner是一个类,nextDouble()是Scanner的成员函数,System.in作为参数传递给Scanner的构造函数,使Scanner用62616964757a6869646 ...

  3. java 单例 缓存hashmap_java 、HashMap 和单例

    前段时间在项目中遇到一个问题.当多个系统同时运行时,大部分系统能够良好运转,部分却卡死在了启动界面.以下是我解决该问题的步骤和总结: 1.复现问题.重新走了一遍出问题的过程,发现问题的确存在.说明这个 ...

  4. java中Scanner类中 next()与nextLine()的区别

    问题:提示用户输入一个英文字符串或者要解密的字符串,然后通过扫描仪获取用户输入的字符串,经过加密或者解密后,把字符串输出. import java.util.Scanner;public class ...

  5. [转载] Java中Scanner用法总结

    参考链接: Java之Scanner类 最近在做OJ类问题的时候,经常由于Scanner的使用造成一些细节问题导致程序不通过(最惨的就是网易笔试,由于sc死循环了也没发现,导致AC代码也不能通过... ...

  6. java中scanner类_Java里Scanner 类

    package com.xuexi; import java.util.Scanner; public class ScannerDemo1 { //通过 Scanner 类的 nextLine() ...

  7. scanner 获取控制台信息_关于java.util.scanner:如何使用Java中的Scanner类从控制台读取输入?...

    如何使用Scanner类从控制台读取输入? 像这样: System.out.println("Enter your username:"); Scanner = input(); ...

  8. Java中Scanner 的用法/ Scanner怎么使用

    Java中要想输入时便要用到Scanner 首先在使用之前导入util包 要想通过控制台进行输入,首先要构造一个Scanner对象,它附属于"标准输入流 Scanner in = new S ...

  9. java中Scanner类用法的详解

    一   java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入. 首先要导入包   import  java.util.Scanner; Sca ...

最新文章

  1. python语言程序设计嵩天-Python语言程序设计基础(第2版)嵩天课后答案
  2. Python学习之路--函数
  3. 字符串排序 墨迹了半天的自闭题目
  4. git pull忽略指定文件_Git忽略提交规则
  5. C++11命名空间的using说明
  6. c++primer 第2章 书上例子 资料截图等
  7. wordpress.org 删除
  8. Webview 非http或者https的网络请求拦截
  9. DELL服务器R730重装Window Server2012系统
  10. navicat如何创建数据库及如何导入数据库文件【初学者适用】
  11. 模型预测控制的缺点_一个模型预测控制(MPC)的简单实现
  12. 判断字符串子序列【python】
  13. 下载网易云音乐的MV
  14. android rsa加密工具类,GitHub - Lerist/encrypt: Android 加密解密工具包。
  15. 如何运行jnlp文件
  16. 聚观早报 | 苹果首款头显明年1月亮相;米哈游投资信托「打水漂」
  17. iOS 开发实用工具
  18. Angular应用的文档生成工具——Compodoc
  19. 【vue】滴滴cube-ui 简化安装
  20. Flask Web开发--3.实时SPC控制图的开发设计

热门文章

  1. matlab中如何表示线积分,MATLAB - 复杂的线/路径积分
  2. Java @SafeVarargs注解
  3. 如何用记事本编写运行java程序?
  4. Android Sdk 安装配置
  5. MySql 创建utf-8格式的数据库
  6. SQL Server常用约束表达式实例
  7. php 图片 byte数组,php – 将图像存储在PostgreSQL数据库的bytea字段中
  8. 花瓣长度和花瓣宽度散点图鸢尾花_基于python的鸢尾花简单聚类模型分析
  9. python画图显示不了中文_Python使用matplotlib绘图无法显示中文问题的解决方法
  10. ubuntu的MySQL远程数据库连接问题查找