Java黑皮书课后题第7章:**7.3(计算数字的出现次数)编写程序,读取1到100之间的整数,然后计算每个数出现的次数。假定输入0表示结束
7.3(计算数字的出现次数)编写程序,读取1到100之间的整数,然后计算每个数出现的次数
- 题目
- 题目描述+运行示例
- 破题
- 法一
- 法二
- 代码
- 法一:硬生生解出来
- 法二完整代码
题目
题目描述+运行示例
**7.3(计算数字的出现次数)编写程序,读取1到100之间的整数,然后计算每个数出现的次数。输入0表示结束
如果一个数出现的次数大于1次,就在输出时使用复数times
下面是一个运行示例:
Enter the integer between 1 and 100:2 5 6 5 4 3 23 43 2 0
2 occurs 2 times
3 occurs 1 time
4 occurs 1 time
5 occurs 2 times
6 occurs 1 time
23 occurs 1 time
43 occurs 1 time
破题
法一
- 声明一个数组lst
- 先获取传入了多少个数字
- 读取整数,判断是否符合“0到100之间的整数”标准,如果不符合则丢弃数据并结束程序,如果读到0则结束读取
- 对数组进行排序Arrays.sort(lst)
- 对数组进行遍历,计算每个数出现的次数并输出
法二
基本思想:
- 先用一个数组lst1,接收用户输入:
int[] lst1 = new int[101];
do{n = input.nextInt();++lst1[n];
}while(n != 0);
这个时候下标数=用户输入的整数,而lst[下标数] = 下标数出现的次数
2. 将lst1数组遍历一边,下标index即输出的数字、lst[index]即这个数字出现的次数,对lst[index]分三种情况讨论输出即可
for (int i = 0; i < 101;i++){if (lst[i] == 0){continue;}else if (lst1[i] == 1){System.out.println(i + " occurs " + lst1[i] + " time");} elseSystem.out.println(i + " occurs " + lst1[i] + " times");
}
代码
法一:硬生生解出来
import java.util.Arrays;
import java.util.Scanner;public class Test7_3 {public static void main(String[] args) {//1. 声明一个数组lst_inputint[] lst_input = new int[101];//2. 读取整数,判断是否符合“0到100之间的整数”标准,如果不符合则丢弃继续读取,如果读到0则结束读取Scanner input = new Scanner(System.in);int count0 = 0;System.out.print("Enter the integer between 1 and 100:");int temp = -1;for (int i = 0;;i++){temp = input.nextInt();// 判断是否在0~100之间if (temp >= 0 && temp <= 100){if (temp == 0) {break;}else{lst_input[i] = temp;count0++;}} else{System.out.println("不符合要求的输入,程序即将退出");System.exit(1);}}// 取lst_input的前count个数赋值给lstint[] lst = new int[count0];for (int i = 0; i < count0; i++)lst[i] = lst_input[i];//3. 对数组进行排序Arrays.sort(lst)Arrays.sort(lst);//4. 对数组进行遍历,计算每个数出现的次数并输出int length = lst.length, count = 0, temp1 = 0;for (int i = 0; i < length;i++){//temp1保存相同元素,count计算次数//三种情况:i=0、temp1值=lst[i]、temp1值≠lst[i]if (i == 0){temp1 = lst[i];count = 1;continue; // 跳出本轮次循环,i自增1、判断条件是否成立,并进入下一轮循环}if (temp1 != lst[i]){if (count > 1) {System.out.println(temp1 + " occurs " + count + " times");}else {System.out.println(temp1 + " occurs " + count + " time");}temp1 = lst[i];count = 1;}else{count++;}}// 输出最后一个元素的结果if (count > 1) {System.out.println(temp1 + " occurs " + count + " times");}else{System.out.println(temp1 + " occurs " + count + " time");}}
}
法二完整代码
import java.util.Scanner;public class Test7_3 {public static void main(String[] args) {int[] lst1 = new int[101];int n = -1;Scanner input = new Scanner(System.in);System.out.print("Enter the integers between 1 and 100: ");do{n = input.nextInt();++lst1[n];}while(n != 0);for (int i = 1; i < 101;i++){if (lst1[i] == 0){continue;}else if (lst1[i] == 1){System.out.println(i + " occurs " + lst1[i] + " time");} elseSystem.out.println(i + " occurs " + lst1[i] + " times");}}
}
Java黑皮书课后题第7章:**7.3(计算数字的出现次数)编写程序,读取1到100之间的整数,然后计算每个数出现的次数。假定输入0表示结束相关推荐
- Java黑皮书课后题第1章:1.6(数列求和)编写程序,显示1+2+3+4+5+6+7+8+9的结果
Java黑皮书课后题第1章:1.6(数列求和) 题目 题目描述 槽点 代码 代码块 区分println(x)与println("x") 法1法2选用 修改日志 题目 题目描述 1. ...
- Java黑皮书课后题第1章:1.3(显示图案)编写程序,显示下面的图案 Java
Java黑皮书课后题第1章:1.3编写程序,显示下面的图案 题目 题目描述 题目槽点 代码片段 赘述 修改日志 题目 题目描述 编写程序,显示(自己语言描述,详见下图:由不同数量的小字母组成JAVA大 ...
- Java黑皮书课后题第5章:**5.17(显示金字塔)编写程序,提示用户输入一个在1到15之间的整数,然后显示一个金字塔形状的图案
**5.17(显示金字塔)编写程序,提示用户输入一个在1到15之间的整数,然后显示一个金字塔形状的图案 题目 题目描述 运行示例 破题 代码 题目 题目描述 **5.17(显示金字塔)编写程序,提示用 ...
- Java黑皮书课后题第10章:*10.18(大素数)编写程序找出五个大于Long.Max_VALUE的素数
10.18(大素数)编写程序找出五个大于Long.Max_VALUE的素数 题目 破题 代码 运行结果 题目 10.18(大素数)编写程序找出五个大于Long.Max_VALUE的素数 破题 类似编程 ...
- Java黑皮书课后题第3章:3.16(随机点)编写程序,显示矩形中一个随机点的坐标。矩形中心位于(0,0),宽100高200
3.16(随机点)编写程序,显示矩形中一个随机点的坐标.矩形中心位于(0,0),宽100高200 题目 题目描述 破题 代码 题目 题目描述 3.16(随机点)编写程序,显示矩形中一个随即点的坐标.矩 ...
- Java黑皮书课后题第8章:**8.14(探讨矩阵)编写程序,提示用户输入一个方阵的长度,随机地在矩阵中填入0和1,打印这个矩阵,然后找出整行、整列或者对角线都是1或0的行、列和对角线
**8.14(探讨矩阵)编写程序,提示用户输入一个方阵的长度,随机地在矩阵中填入0和1,打印这个矩阵,然后找出整行.整列或者对角线都是1或0的行.列和对角线 题目 题目描述与运行示例 破题 代码 题目 ...
- Java黑皮书课后题第5章:**5.27(显示闰年)编写程序,显示从101到2100期间所有闰年,每行显示10个。数字之间用一个空格字符隔开,同时显示这期间闰年的数目
5.27(显示闰年)编写程序,显示从101到2100期间所有闰年,每行显示10个.数字之间用一个空格字符隔开,同时显示这期间闰年的数目 题目 题目概述 破题 代码 运行结果 题目 题目概述 5.27( ...
- Java黑皮书课后题第5章:*5.24(数列求和)编写程序,计算下面数列的和:1/3+3/5+5/7+7/9+……95/97+97/99
5.24(数列求和)编写程序,计算下面数列的和:1/3+3/5+5/7+7/9+--95/97+97/99 题目 题目概述 破题 代码 运行示例 题目 题目概述 5.24(数列求和)编写程序,计算下面 ...
- Java黑皮书课后题第1章:1.4(打印表格)编写程序,显示以下表格
这是目录标题 题目 题目描述 题目槽点 代码 代码块 代码评析与赘述 修改日志 题目 题目描述 1.4(打印表格)编写程序,显示以下表格 a a^2 a^3 1 1 1 2 4 8 3 9 27 4 ...
- Java黑皮书课后题第2章:2.18(打印表格)编写程序,显示下面的表格,将浮点数值类型转化为整数
2.18(打印表格)编写程序,显示下面的表格,将浮点数值类型转化为整数 题目 题目描述 代码 方法评价 化繁为简:强制(数据)类型转换 题目 题目描述 2.18(打印表格)编写程序,显示下面的表格,将 ...
最新文章
- 用电线来传网络信号的黑科技?AirGig究竟是什么
- php操作redis_PHP操作redis的两种方式
- 正则表达式笔试题php,2017年初级PHP程序员笔试题
- 一日千里 云计算普及势不可挡
- MySQL查询时构建自增ID
- SCSS 文件里的感叹号用法 - 给变量设置默认值
- 【算法系列之二】反波兰式
- 提高篇 第二部分 字符串算法 第3章 Trie字典树
- 【华为云技术分享】Nginx应用调优案例
- 【PSD分层海报模板素材】快乐开学季 敬爱教师节!
- linux 日志 转存,如何记录linux终端下的操作日志(转)
- c11 语言,语言学C11-1.ppt
- python 使用迭代来创建集合
- Flex4序列号 adobe flash builder 4 序列号
- 小白建设一个网站需要什么资料?完整网站建设流程今天告诉你!
- matlab 采样点数,信号频率、采样频率、采样点数
- (vopt-7063) Failed to find ‘glbl‘ in hierarchical name 问题解决
- 责任编辑-www.saierhaowaigua.net
- Adobe Flash Player已不再受支持怎么解决?
- 网店代运营_云集微店