收藏 分销(赏)

Java语言程序设计A基础实验2:控制流程.doc

上传人:人****来 文档编号:4373643 上传时间:2024-09-14 格式:DOC 页数:10 大小:245.04KB
下载 相关 举报
Java语言程序设计A基础实验2:控制流程.doc_第1页
第1页 / 共10页
Java语言程序设计A基础实验2:控制流程.doc_第2页
第2页 / 共10页
点击查看更多>>
资源描述
实验课程名称:Java语言程序设计A 实验项目名称 基础实验2:控制流程 实验成绩 实 验 者 专业班级 组 别 同 组 者 无 开始日期 第一部分:实验预习报告(包括实验目的及意义,实验基本原理与方法,主要仪器设备及耗材,实验内容及要求,实验方案与技术路线等) 一.实验目的及意义 控制流程(选择、循环)的应用。 二.实验基本原理与方法 1.选择。 2.循环。 三.主要仪器设备及耗材 1.PC及其兼容机。 2.计算机操作系统。 3.程序编辑器EditPlus。 4.Java开发工具JDK。 四.实验内容及要求 基础实验2-1:从键盘读取一个考试分数列表,计算它们的平均分。 基础实验2-2:从键盘读取一个考试分数列表,计算它们的最高分、最低分。 基础实验2-3:从键盘读取一个考试分数列表,计算总考试人数和每个级别的人数(90~100 优,80~89良,70~79中,60~69及格,0~59不及格)。 基础实验2-4:将实验2-1、2-2、2-3综合起来,从键盘读取一个考试分数列表,统计:总 考试人数、最高分、最低分、平均分、每个级别的人数、每个级别的人数 占总考试人数的百分比。 五.实验方案及技术路线(设计思路、算法、注意事项) 考虑到从键盘中读取的考试分数个数不确定,并且分数有可能重复,所以此处使用ArrayList集合储存double类型数据,决定采用do{}while()循环实现不断从键盘读取分数值,之后结合for循环及if语句的使用,计算集合中的分数的平均分、最高分和最低分以及各个分数级别人数和所占百分比等等。 因为do{}while()循环是先执行do{}中的代码再判断,所以最后输入的负数会被存入集合的末尾,应该要将其删除,用语句marks.remove(marks.size()-1)实现。 第二部分:实验过程记录(可加页)(代码、运行结果、实验中出现的问题及解决过程) n 实验2-1 程序代码如下: import java.util.*; public class Test05 { static double average; public static void main(String[] args) { double markIn; Scanner sc=new Scanner(System.in); List<Double> marks=new ArrayList<Double>(); do { System.out.print("请输入一名学生成绩[输入负数结束]:"); markIn=sc.nextDouble(); marks.add(markIn); } while(markIn>=0); int len=marks.size()-1; marks.remove(len); for(int i=0;i<len;i++) { average+=marks.get(i)/len; } System.out.print(len+"名学生成绩的平均分为:"+average); } } 运行结果如下: n 实验2-2 程序代码如下: import java.util.*; public class Test06 { public static void main(String[] args) { double markIn,max,min; Scanner sc=new Scanner(System.in); List<Double> marks=new ArrayList<Double>(); do { System.out.print("请输入一名学生成绩[输入负数结束]:"); markIn=sc.nextDouble(); marks.add(markIn); } while(markIn>=0); marks.remove(marks.size()-1); max=min=marks.get(0); for(double item:marks) { if(item>max) { max=item; } if(item<min) { min=item; } } System.out.println("学生分数列表:"+marks); System.out.println("最低分:"+min+"\n"+"最高分:"+max); } } 运行结果如下: n 实验2-3 程序代码如下: import java.util.*; public class Test07 { public static void main(String[] args) { double markIn; int gradeA=0,gradeB=0,gradeC=0,gradeD=0,fail=0; Scanner sc=new Scanner(System.in); List<Double> marks=new ArrayList<Double>(); try { do { System.out.print("请输入一名学生成绩[输入负数结束]:"); markIn=sc.nextDouble(); marks.add(markIn); } while(markIn>=0); marks.remove(marks.size()-1); } catch (Exception e) { System.out.println("无效输入!"); } for(double item:marks) { char ch = 0; if(item>=90&&item<100) { ch='A'; } if(item>=80&&item<90) { ch='B'; } if(item>=70&&item<80) { ch='C'; } if(item>=60&&item<70) { ch='D'; } if(item<60) ch='E'; switch(ch) { case 'A':gradeA++;break; case 'B':gradeB++;break; case 'C':gradeC++;break; case 'D':gradeD++;break; case 'E':gradeD++;break; default :System.out.println("错误信息"); } } System.out.println("总考试人数为:"+marks.size()); System.out.println("90到100分数段的人数:"+gradeA); System.out.println("80到90分数段的人数:"+gradeB); System.out.println("70到80分数段的人数:"+gradeC); System.out.println("60到70分数段的人数:"+gradeD); System.out.println("60分以下的人数:"+gradeD); } } 运行结果如下: n 实验2-4 程序代码如下: import java.util.*; public class Test08 { public static void main(String[] args) { try { List<Double> marks=new ArrayList<Double>(); getMark(marks); judgeMark(marks); } catch (InputMismatchException e) { System.err.print("输入有误,只能输入数字!"); } } public static void getMark(List<Double> marksIn) throws InputMismatchException { double markIn; Scanner keyBoard=new Scanner(System.in); do { System.out.print("请输入一名学生成绩[输入负数结束]:"); markIn=keyBoard.nextDouble(); if(markIn>100) { System.err.println("分数值为0-100"); } else { marksIn.add(markIn); } } while(markIn>=0); marksIn.remove(marksIn.size()-1); } public static void judgeMark(List<Double> marksIn) { double max = marksIn.get(0),min = marksIn.get(0),avg=0; int number_A = 0,number_B=0,number_C=0,number_D=0,number_Fail=0,num=0; num=marksIn.size(); for(double item:marksIn) { char ch = 0; avg+=item/num; if(item>max) { max=item; } if(item<min) { min=item; } if(item>=90&&item<100) { ch='A'; } if(item>=80&&item<90) { ch='B'; } if(item>=70&&item<80) { ch='C'; } if(item>=60&&item<70) { ch='D'; } if(item<60) ch='E'; switch(ch) { case 'A':number_A++;break; case 'B':number_B++;break; case 'C':number_C++;break; case 'D':number_D++;break; case 'E':number_Fail++;break; //当分数大于100时,输出此信息 //default :System.out.println("分数值为0-100");break; } } System.out.println("总人数:"+num+"\n"+"平均分:"+avg+"\n"+"最低分:"+min+"\n"+"最高分:"+max); System.out.println("90到100分数段的人数:"+number_A+"占总分数的"+number_A*100.0/num+"%"); System.out.println("80到90分数段的人数:"+number_B+"占总分数的"+number_B*100.0/num+"%"); System.out.println("70到80分数段的人数:"+number_C+"占总分数的"+number_C*100.0/num+"%"); System.out.println("60到70分数段的人数:"+number_D+"占总分数的"+number_D*100.0/num+"%"); System.out.println("60分以下的人数:"+number_Fail+"占总分数的"+number_Fail*100.0/num+"%"); } } 运行结果如下: 1)当输入错误时,给出提示如下: 2) 当输入分数大于100时给出提示如下: 3) 正常输入后结果如下: 教师签字__________ 第三部分 结果与讨论(可加页) 一、 实验结果分析(包括数据处理、影响因素讨论、综合分析和结论等) 试验中使用ArrayList集合解决了考试人数不确定问题,最后也可以很方便的通过.size()方法的出考试人数,同时,在本次实验中是使用do{}while()来实现重复输入,其实也可以使用for循环实现此功能,在遍历集合求最大值、最小值、平均值、个分数级别的人数等等功能的时候,也可以使用增强的for循环来实现遍历,因为试验中不需要更改集合中的数值。此外,实验中在对最大值(max)和最小值(min)赋初值时一开始使他们的初值为0,但后来调试中发现得出的最小值始终未0,所以应当使他们的初始值为集合marks中的第一个值,这样才能得出正确的结果。 二、小结、建议及体会 程序中代码比较长的时候,通常将为将不同的功能实现写成不同的方法,最后只需要在main()方法中调用即可,这样不仅大大增强了程序的可读性,并且通过模块化也能减少出错的概率,是调理更加清晰。此外,实验中对输入错误的处理还不够成熟,每当用户输入错误时能够提示用户输入错误,但提示完后,用户需要从头进行输入,这不是很好的用户体验,应再对程序进行改进,每次用户输入错误或者误操作,只需要重新输入当前的数值即可,无需重来来过。 10
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服