前言

大一下学期学Java,第一次写博客,在Java基础阶段的数组部分,数组的缩减是数组基础阶段的经典问题,我现在用一个案例把它完善,让代码的逻辑更加严谨。

案例——成绩录入数组缩减问题

希望对大家有所帮助。


提示:以下是本篇文章正文内容,下面案例可供参考

一、数组通过键盘录入来初始化

public class Text2 {public static void main(String[] args) {//键盘录入成绩Scanner scanner = new Scanner(System.in);System.out.println("请输入数字的长度:");//用leanth变量接受长度int length = scanner.nextInt();int[] score = new int[length];//遍历数组,输入第几个成绩,依次录入for (int i = 0; i < score.length; i++) {System.out.println("请输入第" + (i + 1) + "个成绩");score[i] = scanner.nextInt();}}}

二、初始化菜单窗口,用swich分支语句来编写,里面的语句都定义为方法,完善操作

        OUT://这里用到OUT来结束多层循环,break只能结束一层循环//定义死循环,录入成绩后,可反复操作,后续通过操作来终止整个代码运行while (true) {System.out.println("请输入要进行的操作编号");System.out.println("1.显示所有的成绩");System.out.println("2.求最好的成绩");System.out.println("3.求平均成绩");System.out.println("4.删除一个随机成绩,并且显示新的所有成绩");int id = scanner.nextInt();switch (id) {case 1://显示成绩场景point1(score);System.out.println("==================");break;case 2://显示最好成绩场景point2(score);System.out.println("==================");break;case 3://求最好成绩场景point3(score);System.out.println("==================");break;case 4://删除一个数组,并显示剩下的成绩point4(score, scanner);System.out.println("==================");break;default:System.out.println("你的操作有误,请重新操作");break;}

三、继续完善后续操作

//定义死循环,反复执行命令while (true) {System.out.println("5.退出操作命令");System.out.println("6.继续执行");int point = scanner.nextInt();if (point == 5){break OUT;}else if (point == 6){System.out.println("继续执行!");break;}else {System.out.println("没有该操作命令,请重新输入");}}

前三个求平均数方法的具体代码

    public static void point1(int[] score) {for (int i = 0; i < score.length; i++) {System.out.println("第" + (i + 1) + "次成绩为" + score[i]);}}public static void point2(int[] score) {int max = score[0];for (int i = 1; i < score.length; i++) {if (max < score[i]) {max = score[i];}}System.out.println("最好的成绩为" + max);}public static void point3(int[] score) {double sud = 0;int sum = 0;for (int i = 0; i < score.length; i++) {sum += score[i];}sud = sum / (score.length);System.out.println("平均成绩" + sud);}

核心部分,最难的操作

这里定义死循环,反复操作,在操作的同时,要满足原来的数组指向新数组,其放在的位置,都很严谨,具体看注释

在这里插入代码片 public static void point4(int[] score, Scanner scanner) //定义死循环,反复执行删除的操作OUT:while (true) {System.out.println("请删除你所要删除的成绩");//定义index索引,用于方便看,不让与循环的局部变量混淆int index = 0;//定义一个分数变量来结束键盘录入int scoreRandom = scanner.nextInt();/*定义一个新数组,(这里在涉及数组知识点:一旦数组定义出来,它的元素个数就是固定的,不能随意更改,可以通过定义一个新数组,把新数组的地址赋给原数组,也就是原数组指向新数组)*/int[] scoreNew = new int[score.length - 1];/*定义标识符,来判断键盘录入的数据是与数组中的数据都不相等,或者有相等的*/boolean flag = true;for (int i = 0; i < score.length; i++) {if (scoreRandom == score[i]) {//若出现相同的,则将flag改为falseflag = false;//索引为当前的iindex = i;/*这里表示的是从当前数据的索引开始,一直到数组最后一个元素,从当前开始依次给前一个数组赋值*/for (int j = index + 1; j < score.length; j++) {score[index] = score[j];}/*然后将原数组遍历,如果键盘录入[1,2,3,4,5]选择删除3,这时原数组就成了[1,2,4,5,0],这里的第五个元素没有了,但长度还是5,所以第五个元素就变成了0(若不定义,默认是0)*///然后将此数组给予新数组for (int f = 0; f < scoreNew.length; f++) {scoreNew[f] = score[f];}//再将原始数组指向新数组,就完成了score = scoreNew;}}//找遍了全部的数组,都没有发现与之相等的,则:if (flag) {System.out.println("没有该成绩,请重新输入");}//展示出成绩,显示出变化for (int i = 0; i < score.length; i++) {System.out.println("第" + (i + 1) + "次成绩为" + score[i]);System.out.println("================");System.out.println();}//这里表示的是:当数组小于时就不能再允许删除了if (score.length < 1) {break;}//后续操作执行,于上文逻辑相同while (true) {System.out.println("\n" + "是否继续删除");System.out.println("n:" + "退出" + "\t" + "y:" + "继续执行");String answer = scanner.next();if (answer.equals("n")) {break OUT;} else if (answer.equals("y")) {System.out.println("继续执行");break;} else {System.out.println("没有该命令,请重新输入");}}}}

全部代码展示

package price._1;import java.util.Scanner;public class Text2 {public static void main(String[] args) {//键盘录入成绩Scanner scanner = new Scanner(System.in);System.out.println("请输入数字的长度:");int length = scanner.nextInt();int[] score = new int[length];//输入第几个成绩,依次录入for (int i = 0; i < score.length; i++) {System.out.println("请输入第" + (i + 1) + "个成绩");score[i] = scanner.nextInt();}//选择操作,完成流程OUT:while (true) {System.out.println("请输入要进行的操作编号");System.out.println("1.显示所有的成绩");System.out.println("2.求最好的成绩");System.out.println("3.求平均成绩");System.out.println("4.删除一个随机成绩,并且显示新的所有成绩");int id = scanner.nextInt();switch (id) {case 1://显示成绩场景point1(score);System.out.println("==================");break;case 2://显示最好成绩场景point2(score);System.out.println("==================");break;case 3://求最好成绩场景point3(score);System.out.println("==================");break;case 4://删除一个数组,并显示剩下的成绩point4(score, scanner);System.out.println("==================");break;default:System.out.println("你的操作有误,请重新操作");break;}while (true) {System.out.println("5.退出操作命令");System.out.println("6.继续执行");int point = scanner.nextInt();if (point == 5){break OUT;}else if (point == 6){System.out.println("继续执行!");break;}else {System.out.println("没有该操作命令,请重新输入");}}}}public static void point1(int[] score) {for (int i = 0; i < score.length; i++) {System.out.println("第" + (i + 1) + "次成绩为" + score[i]);}}public static void point2(int[] score) {int max = score[0];for (int i = 1; i < score.length; i++) {if (max < score[i]) {max = score[i];}}System.out.println("最好的成绩为" + max);}public static void point3(int[] score) {double sud = 0;int sum = 0;for (int i = 0; i < score.length; i++) {sum += score[i];}sud = sum / (score.length);System.out.println("平均成绩" + sud);}public static void point4(int[] score, Scanner scanner) {OUT:while (true) {System.out.println("请删除你所要删除的成绩");int index = 0;int scoreRandom = scanner.nextInt();int[] scoreNew = new int[score.length - 1];boolean flag = true;for (int i = 0; i < score.length; i++) {if (scoreRandom == score[i]) {flag = false;index = i;for (int j = index + 1; j < score.length; j++) {score[index] = score[j];}for (int f = 0; f < scoreNew.length; f++) {scoreNew[f] = score[f];}score = scoreNew;}}if (flag) {System.out.println("没有该成绩,请重新输入");}for (int i = 0; i < score.length; i++) {System.out.println("第" + (i + 1) + "次成绩为" + score[i]);System.out.println("================");System.out.println();}if (score.length < 1) {break;}while (true) {System.out.println("\n" + "是否继续删除");System.out.println("n:" + "退出" + "\t" + "y:" + "继续执行");String answer = scanner.next();if (answer.equals("n")) {break OUT;} else if (answer.equals("y")) {System.out.println("继续执行");break;} else {System.out.println("没有该命令,请重新输入");}}}}
}

Java数组缩减案例——成绩录入,已严格按照业务给出相关推荐

  1. [转载] JAVA数组实现学生成绩统计

    参考链接: Java程序的输出 20(继承) 一.项目名称 数组实现学生成绩统计 二.项目描述 1.项目简介: 由用户输入学生人数与名字,并定义当前学期课程数与课程名,并分别录入每位学生每门课程成绩, ...

  2. c语言输入四个成绩求最高分最低分,数组实现学生成绩录入、求最高分、最低分、平均分和排序...

    /* 使用数组实现10名学生的成绩录入,并输出这10名学生中成绩的 最高分 最低分 平均分 按照分数从大到小排序 思考: 如何实现从小到大排序? 如果学院有5个班,每个班30人,如何处理? 求所有成绩 ...

  3. Java调用方法,键盘录入数据,分别求出长方形的面积和长方体的体积。

    package Test; import java.util.Scanner; public class Test3 {     public static void main(String[] ar ...

  4. java录入学生信息_java实现学生成绩录入系统

    本文为大家分享了java实现学生成绩录入系统,供大家参考,具体内容如下 1.学生类,包括学生的姓名和各科成绩 public class Score { public String name; publ ...

  5. java数组精讲-多案例-够详细

    1 数组概述 需求:现在需要统计某公司员工的工资情况,例如计算平均工资.找到最高工资等.假设该公司有80名员工,用前面所学的知识,程序首先需要声明80个变量来分别记住每位员工的工资,然后在进行操作,这 ...

  6. java数组及Arrays创建一个int 类型数组 数组元素由键盘录入,每次打印插入排序的结果(数组扩容,数组排序,键盘录入)

    @author silence丶你的名字 java数组及Arrays创建一个int 类型数组 数组元素由键盘录入,每次打印插入排序的结果 初始数组元素1 for死循环 获取用户录入的数据,如果为952 ...

  7. Java数组之一维数值数组之成绩统计

    Java数组之一维数值数组 Java数组之一维数值数组之成绩统计 一维数组 声明一维数值数组变量 创建一维数值数组 一维数组初始化 一维数组元素的使用 一维数组长度 成绩统计 Java数组之一维数值数 ...

  8. 简单的学生成绩录入查询系统

    import java.util.Scanner; public class Main {public static void avgst(double ui[],String st) {//函数av ...

  9. 笔记整理1----Java语言基础(一)01 变量与数据类型+02 运算符与表达式+03 条件判断与循环语句+04 JAVA数组+05 函数与方法

    01 变量与数据类型+02 运算符与表达式+03 条件判断与循环语句+04 JAVA数组+05 函数与方法 第01天 java基础知识 今日内容介绍  Java概述.helloworld案例  工 ...

最新文章

  1. mysql 数据目录更改
  2. 【文本分类】Convolutional Neural Networks for Sentence Classification
  3. iOS上相见恨晚的6个APP
  4. Encoder-Decoder (based on RNNS / LSTM)用于序列学习方案
  5. 02----mockjs基本使用
  6. RedHat Linux 7.3基础环境搭建
  7. python安装后如何使用-python如何安装下载后的模块
  8. listView中的button控件获取索引
  9. 两个集合的交集 java版本
  10. teablue数据分析_Bluetea蓝茶的品牌该如何分析,你知道吗
  11. 利用Bitvise等软件通过SSH登录linux系统的心得
  12. jvm的内存回收机制
  13. android游戏和ios游戏哪个多,从2019年3月开始的5款最佳Android和iOS游戏
  14. 在博客中添加动漫美女的js
  15. 如何使用python制作一款屏幕颜色提取器,附带exe文件
  16. python二级考试难不难_计算机二级python考试难吗
  17. 用c语言按键控制数码管,按键与数码管C语言例程
  18. 2016android市场占有率,Newzoo:2016年国内手游收入近100亿美元(附国内五大安卓渠道装机率)...
  19. 现在啥软件都有开源,BI 呢?干货推荐
  20. Visual Studio下载失败解决方法(明明有网却下载不动)

热门文章

  1. ZC-23型冲击继电器
  2. Docker使用中的一些错误总结
  3. 想知道自己的某个内存的小视频总时长?那这篇CSDN很适合你,快来看看Python如何实现求MP4时长吧(包含os模块和moviepy模块的全套基础操作)
  4. PCM 单双声道转换
  5. IBM Watson大裁70% 员工,国内大批伪AI企业!
  6. TakeScreenshotException: Failed to capture a screenshot
  7. 离散数学学习笔记----集合代数
  8. 深入分析Redis Server went away产生的原因
  9. vv7无法启动显示发动机故障_vv7旗舰发动机故障灯亮用不用处理?
  10. 消灭顽固的exe病毒,拯救宝贵的文件