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);

}

}

运行效果截图:

1335179321_7944.jpg

遇到的问题说明:

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

str = scan.next();

str = scan.nextLine();

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

原因如下:

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/571898.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计蒜客NOIP2017提高组模拟赛(四)day1

T1:小X的质数 小 X 是一位热爱数学的男孩子&#xff0c;在茫茫的数字中&#xff0c;他对质数更有一种独特的情感。小 X 认为&#xff0c;质数是一切自然数起源的地方。 在小 X 的认知里&#xff0c;质数是除了本身和 1 以外&#xff0c;没有其他因数的数字。 但由于小 X 对质数…

c# combobox集合数据不显示_Excel也能玩转百万数据

最近一方君工作中要查询编辑很多的数据&#xff08;超过30万行&#xff0c;25个字段&#xff09;&#xff0c;这么多数据放在Excel表中当然是没办法操作的&#xff0c;筛选的时候很容易崩溃&#xff0c;原来用得很顺滑的一些公式&#xff0c;一计算就未响应&#xff0c;多点几下…

scada系统集成_MES/MOM与WMS系统集成应用案例-系统接口、交互数据分析

写在面前(By 小智)前面我们介绍了西门子、罗克韦尔、施耐德、达索等的MES/MOM平台(见文末推荐)也绍和分析了MES与ERP之间的系统集成案例&#xff1a;MES与EPR进行系统集成的实际案例-系统接口、交互数据分析同时分享了各种系统之间集成的文章&#xff1a;Teamcenter、TIA Porta…

ftl 展示图片_视频号变迁的内容展示逻辑

最初的视频号只有单列展示&#xff0c;只有关注栏&#xff0c;并没有朋友和热门区分。产出内容限制为不超过 1 分钟的视频&#xff0c;或 9 张以内的图片。单列信息流、时间倒序排列(也存在个别特例)。这里想到之前龙哥说的关于朋友圈的思考&#xff1a;朋友圈是一个广场&#…

10.3 考试 (考得不好)

T1 我只能说 它是一个比较暴力的dp&#xff0c;需要人力讨论... 所以考试觉得讨论太麻烦&#xff0c;直接内心崩溃了....(好像这也是我考炸的原因吧) 教训&#xff1a;以后要勤快一些&#xff0c;代码能力 唉唉唉 #include <cstdio> #include <cstring> #include &…

小程序[渲染层网络层错误] failed to load image_游戏中水的渲染技术

水的渲染一直是图形学需要解决的问题&#xff0c;本篇博客主要介绍用傅里叶变换算法实现的水反射&#xff0c;也是一种假反射效果&#xff0c;目的是优化效率。实现的效果如下图所示&#xff1a;使用傅里叶系数来表示地形高度的假反射效果&#xff0c;在我们开发的游戏中使用水…

pip install 报错UnicodeDecodeError: 'ascii' codec can't decode byte 0xb5 in

当python在window环境中通过pip安装pandas报标题这样的错&#xff0c;主要是因为python默认编码格式是&#xff1a;ascii 在https://www.python.org/dev/peps/pep-0100/文章中有介绍 解决方法&#xff1a;在python/lib/site.py中加入 import sysreload(sys)sys.setdefaultenc…

jdbc是java语言编写的类和接口_JDBC——Java语言连接数据库的标准

JDBC概述APIJDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API&#xff0c;可以为多种关系数据库提供统一访问&#xff0c;它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准&#xff0c;据此可以构建更高级的工具和接口&#xff0c;使…

怎样判断电饭锅温度传感器的好坏?_空调温度传感器的作用与检测。

温度传感器是指对温度进行感应&#xff0c;并将感应的温度变化情况转换为电信号的功能部件。我们在练习温度传感器检测代换之前&#xff0c;要先对温度传感器的安装位置、结构特点和工作原理有一定的了解。1、温度传感器的安装位置及结构在空调器室内机中&#xff0c;通常设有两…

java去掉图片边框颜色_sharp 去除图片边框

trim接受参数是颜色相似度, 并不能指定边框颜色, 所以有可能会误删除内容, 需要注意trim 需要转为buffer或者文件后再次操作, 否则图片信息不变从剪裁效果来看, 精度和速度都是可以的const sharp require("sharp");const path "./html/a.png";const outp…

java mail 不用密码_iPhone 无需越狱,简单给 App 加密码锁

在手机上总有些小秘密&#xff0c;也有些APP不想被打开。由于iOS本身限制&#xff0c;想给APP加上密码锁&#xff0c;一般都是需要越狱才能实现。其实在iOS 12就加入了【屏幕使用时间】&#xff0c;用来更好设置APP使用时间的限额。屏幕使用时间屏幕时间功能可以协助您了解自己…

spark内存溢出怎么解决_和平精英:更新需要预留6G内存,玩家抱怨手机扛不住,怎么解决?...

嗨&#xff0c;小伙伴们大家好呀&#xff01;《和平精英》新版本终于来了哈&#xff0c;小伙伴们在22号上午登录游戏&#xff0c;就可以收到更新提示&#xff0c;点击进行更新就好了。或者是在各个应用商店里等待更新推送&#xff0c;也行哦&#xff01;但是呢&#xff0c;每到…

【转】LDA数学八卦

转自LDA数学八卦 在 Machine Learning 中&#xff0c;LDA 是两个常用模型的简称&#xff1a; Linear Discriminant Analysis 和 Latent Dirichlet Allocation&#xff0c; 在这篇文章中我们主要八卦的是后者。LDA 是一个在文本建模中很著名的模型&#xff0c;类似于 SVD, PLSA …

电脑字体模糊_小红书上传视频模糊?做小红书视频99%的工具都在这了

到现在小红书视频号功能已经上线快三个月了&#xff0c;越来越多的小伙伴开始拍视频、创作视频笔记&#xff0c;但是对于新接触视频的小伙伴来说&#xff0c;拍摄视频好像是一件很难的事&#xff0c;特别是不清楚该选择什么拍摄设备、不知道怎么剪辑视频&#xff0c;还有如何上…

谷歌浏览器不能上网_谷歌浏览器插件下载及安装教程!

emmm......这篇文章的内容非常小白&#xff0c;相信大部分人都会这个基本操作。但是阁主相信还有些妹子操作不来&#xff0c;如果还没有男朋友&#xff0c;那不是铁定不会安装谷歌浏览器插件么&#xff1f;其实“谷歌浏览器插件”这个组合&#xff0c;可以解决很多问题&#xf…

高级技巧之Lambda表达式

1.Lambda表达式简介 其本质上是一种匿名方法&#xff0c;它既没有方法名&#xff0c;也即没有访问修饰符和返回值类型&#xff0c;使用它来编写代码将会更加简洁&#xff0c;也更加易读。 2.使用该表达式需要配置的数据 3.传统java和使用Lambda表达式的对比 0&#xff09;总结&…

设计模式之——Builder建造模式

Builder模式又叫建造模式&#xff0c;是用于组装具有复杂结构的实例的模式。 示例程序是编写一个文档&#xff0c;并且写入到文件中&#xff0c;该文档具有以下结构&#xff0c;含有标题&#xff0c;字符串&#xff0c;一些条目。 Builder抽象类&#xff0c;为建造模式的核心pa…

java程序员_Java和Python的区别 好程序员帮大家解读

Java和Python的区别 好程序员今天先来解读Java编程语言的优势&#xff0c;人工智能和大数据火爆一时&#xff0c;随之而来&#xff0c;引起了编程语言的人气暴涨。而Java和Python作为最炙手可热的编程语言从一开始便赢得了众多程序员的青睐。凭借各自强大的性能和优势&#xff…

门户网站运营方案_网络营销方案涉及的工作内容有哪些

问&#xff1a;在公司从事网络营销推广工作&#xff0c;想问下要撰写网络营销方案&#xff0c;要涉及到哪些层面&#xff0c;工作内容有哪些呢&#xff1f;答&#xff1a;总的来说&#xff0c;网络营销方案涉及到&#xff1a;网站技术&#xff0c;市场营销&#xff0c;网络应用…

用宝塔本地搭建php,Windows系统如何使用宝塔面板一键快速搭建本地服务器环境(LNMP/LAMP)...

宝塔面板宝塔面板类似于wamp&#xff0c;xampp等一键集成环境。但是宝塔面板操作更简单&#xff0c;更新更快。个人建议使用宝塔替代wamp。(LNMP等环境不再赘述&#xff0c;请自行百度。建议使用LNMP环境&#xff0c;即NginxMySQLPHP环境)下载前往宝塔面板官网https://www.bt.c…