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

破题

法一

  1. 声明一个数组lst
  2. 先获取传入了多少个数字
  3. 读取整数,判断是否符合“0到100之间的整数”标准,如果不符合则丢弃数据并结束程序,如果读到0则结束读取
  4. 对数组进行排序Arrays.sort(lst)
  5. 对数组进行遍历,计算每个数出现的次数并输出

法二

基本思想:

  1. 先用一个数组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表示结束相关推荐

  1. Java黑皮书课后题第1章:1.6(数列求和)编写程序,显示1+2+3+4+5+6+7+8+9的结果

    Java黑皮书课后题第1章:1.6(数列求和) 题目 题目描述 槽点 代码 代码块 区分println(x)与println("x") 法1法2选用 修改日志 题目 题目描述 1. ...

  2. Java黑皮书课后题第1章:1.3(显示图案)编写程序,显示下面的图案 Java

    Java黑皮书课后题第1章:1.3编写程序,显示下面的图案 题目 题目描述 题目槽点 代码片段 赘述 修改日志 题目 题目描述 编写程序,显示(自己语言描述,详见下图:由不同数量的小字母组成JAVA大 ...

  3. Java黑皮书课后题第5章:**5.17(显示金字塔)编写程序,提示用户输入一个在1到15之间的整数,然后显示一个金字塔形状的图案

    **5.17(显示金字塔)编写程序,提示用户输入一个在1到15之间的整数,然后显示一个金字塔形状的图案 题目 题目描述 运行示例 破题 代码 题目 题目描述 **5.17(显示金字塔)编写程序,提示用 ...

  4. Java黑皮书课后题第10章:*10.18(大素数)编写程序找出五个大于Long.Max_VALUE的素数

    10.18(大素数)编写程序找出五个大于Long.Max_VALUE的素数 题目 破题 代码 运行结果 题目 10.18(大素数)编写程序找出五个大于Long.Max_VALUE的素数 破题 类似编程 ...

  5. Java黑皮书课后题第3章:3.16(随机点)编写程序,显示矩形中一个随机点的坐标。矩形中心位于(0,0),宽100高200

    3.16(随机点)编写程序,显示矩形中一个随机点的坐标.矩形中心位于(0,0),宽100高200 题目 题目描述 破题 代码 题目 题目描述 3.16(随机点)编写程序,显示矩形中一个随即点的坐标.矩 ...

  6. Java黑皮书课后题第8章:**8.14(探讨矩阵)编写程序,提示用户输入一个方阵的长度,随机地在矩阵中填入0和1,打印这个矩阵,然后找出整行、整列或者对角线都是1或0的行、列和对角线

    **8.14(探讨矩阵)编写程序,提示用户输入一个方阵的长度,随机地在矩阵中填入0和1,打印这个矩阵,然后找出整行.整列或者对角线都是1或0的行.列和对角线 题目 题目描述与运行示例 破题 代码 题目 ...

  7. Java黑皮书课后题第5章:**5.27(显示闰年)编写程序,显示从101到2100期间所有闰年,每行显示10个。数字之间用一个空格字符隔开,同时显示这期间闰年的数目

    5.27(显示闰年)编写程序,显示从101到2100期间所有闰年,每行显示10个.数字之间用一个空格字符隔开,同时显示这期间闰年的数目 题目 题目概述 破题 代码 运行结果 题目 题目概述 5.27( ...

  8. 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(数列求和)编写程序,计算下面 ...

  9. Java黑皮书课后题第1章:1.4(打印表格)编写程序,显示以下表格

    这是目录标题 题目 题目描述 题目槽点 代码 代码块 代码评析与赘述 修改日志 题目 题目描述 1.4(打印表格)编写程序,显示以下表格 a a^2 a^3 1 1 1 2 4 8 3 9 27 4 ...

  10. Java黑皮书课后题第2章:2.18(打印表格)编写程序,显示下面的表格,将浮点数值类型转化为整数

    2.18(打印表格)编写程序,显示下面的表格,将浮点数值类型转化为整数 题目 题目描述 代码 方法评价 化繁为简:强制(数据)类型转换 题目 题目描述 2.18(打印表格)编写程序,显示下面的表格,将 ...

最新文章

  1. 用电线来传网络信号的黑科技?AirGig究竟是什么
  2. php操作redis_PHP操作redis的两种方式
  3. 正则表达式笔试题php,2017年初级PHP程序员笔试题
  4. 一日千里 云计算普及势不可挡
  5. MySQL查询时构建自增ID
  6. SCSS 文件里的感叹号用法 - 给变量设置默认值
  7. 【算法系列之二】反波兰式
  8. 提高篇 第二部分 字符串算法 第3章 Trie字典树
  9. 【华为云技术分享】Nginx应用调优案例
  10. 【PSD分层海报模板素材】快乐开学季 敬爱教师节!
  11. linux 日志 转存,如何记录linux终端下的操作日志(转)
  12. c11 语言,语言学C11-1.ppt
  13. python 使用迭代来创建集合
  14. Flex4序列号 adobe flash builder 4 序列号
  15. 小白建设一个网站需要什么资料?完整网站建设流程今天告诉你!
  16. matlab 采样点数,信号频率、采样频率、采样点数
  17. (vopt-7063) Failed to find ‘glbl‘ in hierarchical name 问题解决
  18. 责任编辑-www.saierhaowaigua.net
  19. Adobe Flash Player已不再受支持怎么解决?
  20. 网店代运营_云集微店

热门文章

  1. 干货!策略路由和路由策略的区别和联系
  2. 问题 F: 小鱼的格子裁剪(dfs)
  3. 产品解读 | 敏捷版数据库场景 一站式快速构建企业全场景数据库管理平台
  4. 阿里云罗小飞:阿里云边缘云,从资源到场景的产品演进
  5. Hologres揭秘:高性能原生加速MaxCompute核心原理
  6. Gradle 编译速度提升 70%!怎么做到的?
  7. 建立海盗的天堂:盗贼之海的AI(一)
  8. 《伊万博士: 进化》利用三角剖分算法复刻《超越光速》地图机制
  9. lnmp1.7安装环境后mysql无法启动的解决
  10. C#计算两个时间的差