java求平均分与总成绩
Java程序设计课件:(六)数组

访问成员
Chapter
60
80 成
90
绩 单
70
85
17
使用数组求平均分
回顾问题1:计算全班学员的平均分
public static void main(String[ ] args) {
int[ ] scores = new int[5]; //成绩数组
int sum = 0;
//成绩总和
Scanner input = new Scanner(System.in);
(六)数组
Chapter
1
回顾与作业点评
循环语句while、do-while、for的区别是什 么?
写出运行结果
int i = 0, j = 0;
while(i<7){
if(j>4){
System.out.println("**");
i++;
continue;
}
System.out.println("*");
int[ ] score = {89, 79, 76};
度
int[ ] score = new int[ ]{89, 79, 76};
方法2:动态地从键盘录入信息并赋
值 Scanner input = new Scanner(System.in);
for(int i = 0; i < 30; i ++){ score[i] = input.nextInt();
", 李明的身高是:" + heightLi);
heightZhang 170
不同的变量会分配不 同的存储空间
Java程序设计教程第6章6.2 类的方法

定义带参数的方法
public class ZhazhiJi {
public String zhazhi ( String fruit ) { String juice = fruit + "汁";
本章任务
4/61
会定义和使用类的无参方法 理解变量作用域 会添加JavaDoc注释 会定义带参方法 会使用带参方法 会创建包组织Java工程
本章目标
5/61
类的方法
按此按钮, 狮子开始跑
电动玩具狮子 属性:
颜色:黄色
问题
按此按钮, 狮子开始叫
行为: 跑 叫 抢球
写出狮子对象的“跑”方法、 “叫”方法、“抢 球”方法
public static void main(String[] args){
Student stu = new Student(); name = "神仙姐姐";
stu.sex
sex = 'F'; age = 18;
stu.age
stu.show();
}
}
3/61
实现计算平均分和课程总成绩 实现MyShopping系统菜单切换 实现MyShopping系统入口程序 实现客户信息的添加和显示 修改客户姓名 对客户姓名排序 实现模拟账户存取款功能
语法
对象名.方法名();
问题
小明过生日,爸爸送他一个电动狮子玩具,编程 测试这个狮子能否正常工作
10/61
方法调用
public class AutoLion {
String color = "黄色"; //颜色
/*跑*/ public void run(){
Java练习及参考答案

Java练习及参考答案1,编写程序,判断给定的某个年份是否是闰年。
闰年的判断规则如下:(1)若某个年份能被4整除但不能被100整除,则是闰年。
(2)若某个年份能被400整除,则也是闰年。
import java.util.Scanner;class Bissextile{public static void main(String[] arge){System.out.print("请输入年份");int year; //定义输入的年份名字为“year”Scanner scanner = new Scanner(System.in);year = scanner.nextInt();if (year<0||year>3000){System.out.println("年份有误,程序退出!"); System.exit(0);}if ((year%4==0)&&(year%100!=0)||(year%400==0)) System.out.println(year+" is bissextile");elseSystem.out.println(year+" is not bissextile ");}}2,给定一个百分制的分数,输出相应的等级。
90分以上 A级80~89 B级70~79 C级60~69 D级60分以下 E级import java.util.Scanner;class Mark{public static void main(String[] args){System.out.println("请输入一个分数");//定义输入的分数为“mark”,且分数会有小数double mark;Scanner scanner = new Scanner(System.in);mark = scanner.nextDouble();//判断是否有输入错误。
《Java语言程序设计》教案

第3节变量与常量
1.常量
2.变量
3.课堂案例
第4节运算符
1.赋值运算符“=”
2.算术运算符+、-、*、/、%
3.自增自减运算符
4.比较运算符>;<;==;>=;<=;!=
5.逻辑运算符&&;||;!
6.三目运算符
7.运算符的优先级
第5节数据类型转换
1.自动类型转换
2.强制类型转换
5、计算1*2*3*4*……*10的结果。
6、输入一个大于0的整数放入到变量n中,计算1+2+3+……+(n-1)+n的结果。
7、输入一个整数放入到变量n中,如果这个整数大于0,那么计算1+2+3+……+(n-1)+n的结果,否则输出“输入的数据有错误”。
8、循环输入5个学生的成绩,计算这5个学生的总分,及平均分。
教学内容
备注
第5章数组和字符串
第1节数组
1.一维数组的声明与创建
2.一维数组的初始化
3.二维数组的创建与初始化
4.课堂案例——数组元素排序
第2节String类
1.声明并创建字符串(常用)
2.使用字符数组创建字符串
3.连接字符串连接字符串“Hello”和“Java”
4.连接其他数据类型
5.获取字符串长度
比如:输入abc输入def输入Esc
就输出abcdef
12.输出1000以内的水仙花数
13.使用do-while实现:输出摄氏温度与华氏温度的对照表,要求它从摄氏温度0度到250度,每隔20度为一项,对照表中的条目不超过10条。
Java面试题(带答案)

湖南世杰Java工程师面试题选择题:单选题1,以下java程序代码,执行后的结果是( )java.util.HashMap map=newjava.util.HashMap();map.put("name",null);map.put("name","Jack");System.out.println(map.size());A: 0 B: null C: 1 D: 2答案:C2,执行以下程序后的输出结果是( )Public class Test {Public static void main(String[] args) {StringBuffer a = new StringBuffer("A");StringBuffer b = new StringBuffer("B");operator(a, b);System.out.println(a +","+ b);}Public static void operator(StringBuffer x, StringBuffer y) { x.append(y); y = x;}}A: A,A B: A,B C: B,B D: AB,B答案:D3,关于依赖注入,下列选项中说法错误的是( )A:依赖注入能够独立开发各组件,然后根据组件间关系进行组装B:依赖注入使组件之间相互依赖,相互制约C:依赖注入提供使用接口编程D:依赖注入指对象在使用时动态注入答案:B4,关于spring说法错误的是( )A: spring是一个轻量级JAVA EE的框架集合B: spring是“依赖注入”模式的实现C: 使用spring可以实现声明事务D: spring提供了AOP方式的日志系统答案:D5,要在session对象中保存属性,可以使用以下哪个语句( ) A: session.getAttribute(“key”,”value”)B: session.setAttribute(“key”,”value”)C: session.setAttribute(“key”)D: session.getAttribute(“key”)答案:B6,关于以下程序代码的说明正确的是?( )Public class HasStatic{Private static int x = 100;Public static void main(String args[]){HasStatic hs1= new HasStatic();hs1.x++;HasStatic hs2= new HasStatic();hs2.x++;hs1=new HasStatic();hs1.x++;HasStatic.x--;System.out.println("x="+x);}}A: 程序通过编译,输出结果为:x=103B: 10行不能通过编译,因为x是私有静态变量C: 5行不能通过编译,因为引用了私有静态变量D: 程序通过编译,输出结果为:x=102答案:D7,以下哪一项不是使用mvc模式设计的web应用程序所具有的优点( ) A:可维护行强B:可扩展性强C:代码重复少D:大大减少代码量答案:D8,在 myjsp.jsp 中,关于下面的代码说法错误的是: ( )<%@ page language="java" import="java.util.*" errorPage="error.jsp" isErrorPage="false" %>A: 该页面可以使用 exception 对象B: 该页面发生异常会转向 error.jspC: 存在 errorPage 属性时,isErrorPage 是默认为 falseD: error.jsp 页面一定要有isErrorPage 属性且值为 true答案:A9,关于Spring MVC的核心控制器DispatcherServlet的作用,以下说法错误的是()A:它负责接收HTTP请求B:加载配置文件C:实现业务操作D:初始化上下应用对象ApplicationContext答案:C10,下面的类图表示的是哪个设计模式?( )A:代理模式(Proxy)B:装饰模式(Decorator)C:桥接模式(Bridge)D:观察者模式(Observer)答案:D11,java如何接受request域中的参数? ( )A: request.getRequestURL()B: request. getAttribute()C: request.getParameter()D: request.getWriter()答案:C12,对下面Spring声明式事务的配置含义的说明错误的是( )<bean id="txProxyTemplate"abstract="true" class="org.springframework.transaction.interceptor.TransactionProxyFact oryBean"><property name="transactionManager"ref="myTransactionManager"/><property name="transactionAttributes"><props><prop key="get*">PROPAGATION_REQUIRED,readOnly</prop><prop key="*">PROPAGATION_REQUIRED</prop></props></property></bean>A:定义了声明式事务的配置模板B: 对get方法采用只读事务C: 缺少sessionFactory属性的注入D: 配置需要事务管理的bean的代理时,通过parent引用这个配置模板,代码如下:<bean id="petBiz" parent="txProxyTemplate"><property name="target" ref="petTarget"/></bean>答案:C13,下面的输出结果是什么?( )Public class Demo {Public static void main(String args[]){String str = new String("hello");if(str=="hello"){System.out.println("true");}else{System.out.println("false");}}}A: trueB: falseC:编译不通过D:执行报错答案:B14,下面属于java合法变量定义的是?( )A: finalB:1var1C: _var2D: var3&答案:C15,下面有关JSP内置对象的描述,说法错误的是?( )A: session对象:session对象指的是客户端与服务器的一次会话,从客户连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止B: request对象:客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应C: application对象:application对象实现了用户间数据的共享,可存放全局变量,可以有多个D: response对象:response对象包含了响应客户请求的有关信息答案:C16,Please choice the output result ( )public class Test{Public static void changeStr(String str){str ="welcome";}Public static void main(String[] args){String str ="1234";changeStr(str);System.out.println(str);}}A: 1234B: welcomeC: 空D: 不确定答案:A17,for(i=0;i<10;++i,sum+=i);i的最终结果是?( ) A: 10B: 9C: 11D: 以上答案都不正确答案:A18,对于下面这段代码,以下说法正确的是:( )Public class Test{Public int x;Public static void main(String args[]{System. out. println("Value is"+ x);}}A: 程序会打出 "Value is 0"B: 程序会抛出 NullPointerExceptionC: 非静态变量不能够被静态方法引用D: 编译器会抛出 "possible reference before assignment"的错误答案:C19,HashMap和HashTable的描述,错误的是? ( )A: 他们都实现了Map接口。
java做成绩排名表,如何实现同分同名次

java做成绩排名表,如何实现同分同名次要求计算综合平均分去除最⾼分和最低分,并且实现同分同名次//去除最⾼分,和最低分,实现思路,根据id 使⽤groupingby分组然后循环分组的map接着根据分数进⾏排序,然后去除最⾼的和最低分,删除list 第⼀条数据,以及最后⼀条数,这样就把最⾼分,和最低分去除然后统计平均分,实现思路,⼀样重新根据id 使⽤groupingby 重新分组然后循环数据合并,根据id为key,相同id的数据进⾏分数相加public List<CompetitionWorkExhibitionPo1> getList(List<CompetitionWorkExhibitionPo1> list) {List<CompetitionWorkExhibitionPo1> list1 = new ArrayList<>();List<CompetitionWorkExhibitionPo1> list2 = new ArrayList<>();Map<Long, List<CompetitionWorkExhibitionPo1>> collect = list.stream().collect(Collectors.groupingBy(CompetitionWorkExhibitionPo1::getCompetitionUserId));//使⽤groupingby分组for (Map.Entry<Long, List<CompetitionWorkExhibitionPo1>> com : collect.entrySet()) {List<CompetitionWorkExhibitionPo1> li = com.getValue();li.sort(paring(CompetitionWorkExhibitionPo1::getCompetitionUserId).thenComparing(CompetitionWorkExhibitionPo1::getSum));//根据分数排序li.remove(0);//删除list 第⼀条数据li.remove(li.size() - 1);//以及最后⼀条数list1.addAll(li);//然后把数据保存进⼀个新的list}Map<Long, List<CompetitionWorkExhibitionPo1>> collect1 = list1.stream().collect(Collectors.groupingBy(CompetitionWorkExhibitionPo1::getCompetitionUserId));//统计平均分,重新分组for (Map.Entry<Long, List<CompetitionWorkExhibitionPo1>> co : collect1.entrySet()) {List<CompetitionWorkExhibitionPo1> value = co.getValue();int inx = value.size();//保存list的长度,⽤户计算平均分list2.addAll(//处理完保存到⼀个新的集合value.stream()// 表⽰id为key,接着如果有重复的,那么从BillsNums对象o1与o2中筛选出⼀个,这⾥选择o1,// 并把id重复,需要将nums和sums与o1进⾏合并的o2, 赋值给o1,最后返回o1.collect(Collectors.toMap(CompetitionWorkExhibitionPo1::getCompetitionUserId, a -> a, (o1, o2) -> {o1.setSum(o1.getSum() + o2.getSum());//分数相加o1.setCount(String.valueOf(inx));//把list的长度,赋值return o1;})).values().stream().collect(Collectors.toList()));}int count = mapper2.count(); //查询最⾼点赞数DecimalFormat df = new DecimalFormat("0.00");//格式化⼩数for (CompetitionWorkExhibitionPo1 competitionWorkExhibitionPo1 : list2) { //处理点赞得分competitionWorkExhibitionPo1.setGiveScore(competitionWorkExhibitionPo1.getPraiseCount() > 0 ? df.format((float) competitionWorkExhibitionPo1.getPraiseCount() / count) : String.valueOf(0)); //处理总分competitionWorkExhibitionPo1.setReviewScore(df.format((float) competitionWorkExhibitionPo1.getSum() / Integer.parseInt(competitionWorkExhibitionPo1.getCount())));}for (CompetitionWorkExhibitionPo1 competitionWorkExhibitionPo1 : list2) { //处理综合总分=点赞得分+总分competitionWorkExhibitionPo1.setComprehensiveScore(Double.valueOf(competitionWorkExhibitionPo1.getGiveScore()) + Double.valueOf(competitionWorkExhibitionPo1.getReviewScore()));}List<CompetitionWorkExhibitionPo1> competitionWorkExhibitionPo1s = CompetitionRankingService.fun1(list2);//调⽤⽅法,得出排名return list2;}// ⽅法⼀:传统的⽅法排序:把不同成绩保存map中,最后实体类根据map的key找到排名存⼊实体排名⾥⾯public static List<CompetitionWorkExhibitionPo1> fun1(List<CompetitionWorkExhibitionPo1> stus) {// 按照成绩排序stus.sort(new Comparator<CompetitionWorkExhibitionPo1>() {@Overridepublic int compare(CompetitionWorkExhibitionPo1 s1, CompetitionWorkExhibitionPo1 s2) {return pare(s1.getComprehensiveScore(), s2.getComprehensiveScore());}});int rank = 1;//保存排名int index = 1;//排序号double lastScore = -1;// 最近⼀次的分for (int i = 0; i < stus.size(); i++) {CompetitionWorkExhibitionPo1 s = stus.get(i);if (pare(lastScore, s.getComprehensiveScore()) != 0) { // 如果成绩和上⼀名的成绩不相同,那么排名+1lastScore = s.getComprehensiveScore();stus.get(i).setRank(rank++);//设置排名stus.get(i).setIndex(index++);//设置排序号}}stus.stream().forEach(System.out::println);return stus;}/ ⽅法2: Java8开始⽀持的Lambada表达式配合 Stream API 来进⾏分组排序public static List<CompetitionWorkExhibitionPo1> fun2(List<CompetitionWorkExhibitionPo1> stus) {List<Map.Entry<Double, List<CompetitionWorkExhibitionPo1>>> list = stus.stream().collect(Collectors.groupingBy(CompetitionWorkExhibitionPo1::getComprehensiveScore)).entrySet() .stream().sorted((s1, s2) -> pare(s1.getKey(), s2.getKey())).collect(Collectors.toList());int rank = 1;//设置排名int index = 1;//设置排序号for (Map.Entry<Double, List<CompetitionWorkExhibitionPo1>> entry : list) {for (CompetitionWorkExhibitionPo1 competitionWorkExhibitionPo1 : entry.getValue()) {competitionWorkExhibitionPo1.setRank(rank++);competitionWorkExhibitionPo1.setIndex(index++);}}stus.stream().forEach(System.out::println);return stus;}。
java8实现list集合中按照某一个值相加求和,平均值等操作代码

java8实现list集合中按照某⼀个值相加求和,平均值等操作代码集合:List<User> user = new User();user .stream().collect(Collectors.summingInt(User::getAge))参数类型:summarizingDouble 统计数据(double)状态, 其中包括count min max sum和平均值summarizingInt 统计数据(int)状态, 其中包括count min max sum和平均值summarizingLong 统计数据(long)状态, 其中包括count min max sum和平均值.summingInt 求和返回int类型summingDouble 求和返回double类型summingLong 求和返回long类型counting 返回Stream的元素个数averagingDouble 求平均值返回double类型averagingInt 求平均值返回int类型averagingLong 求平均值返回long类型maxBy 在指定条件下,返回最⼤值minBy 在指定条件下,返回最⼩值补充知识:Java8集合List排序、筛选、求和、求最⼤值、平均值、List转MapJava8集合List排序、筛选1. List元素有序元素可重复1.1 ArrayList动态数组实现查询快增删慢(末尾处也快)1.2 LinkedList链表实现查询慢增删快1.3 ArrayList和LinkedList⽐较实现查询增删线程安全?ArrayList动态数组快慢(末尾处也快)不安全LinkedList链表慢快不安全ArrayList:它的默认初始化容量是10,每次扩容时候增加原先容量的⼀半,也就是变为原来的1.5倍。
LinkedList:底层实现是双向链表。
在增加和删除元素时效率较⾼。
1.4 List过滤指定元素1.4.1 准备待测试的Listpublic class Message {private Long id; //idprivate String msg; //消息private Date sendTime; //时间戳//省略get set}//返回⼀个Listprivate static List<Message> getMessageList(){List<Message> list = new ArrayList<>();list.add(new Message(1L, "a", new Date()));list.add(new Message(2L, "b", new Date()));list.add(new Message(4L, "b", new Date()));list.add(new Message(3L, "c", new Date()));return list;}1.4.2 使⽤Iterator遍历Listprivate static void TestArrayList(){List<Message> list = getMessageList();System.out.print("删除前:");list.stream().forEach(item -> System.out.print(item));Iterator<Message> it = list.iterator();while (it.hasNext()) {Message s = it.next();if (s.getMsg().equals("b")) {it.remove();}}System.out.print("\n删除后:");list.stream().forEach(item -> System.out.print(item));}1.4.2 使⽤Java8对List过滤筛选private static void filterList(){List<Message> list1 = getMessageList();//过滤所有msg是b的记录List<Message> list2 = list1.stream().filter(s -> !s.getMsg().equals("b")).collect(Collectors.toList());list2.stream().forEach(item -> System.out.println(item));}1.4.3 使⽤distinct去重//使⽤distinct去重List<String> distinctMsg = list.stream().map(Message::getMsg).distinct().collect(Collectors.toList()); distinctMsg.forEach(System.out::println);1.4.4 使⽤toSet去重//使⽤collect(toSet())去重Set<String> distinctMsg2 = list.stream().map(Message::getMsg).collect(toSet());distinctMsg2.forEach(System.out::println);1.5 使⽤Java8对List排序1.5.1 单个字段排序private static void sortList(){List<Message> list = getMessageList();if (list != null && !list.isEmpty()){System.out.println("===排序前如下===");list.stream().forEach(item -> System.out.println(item));//根据Id升序排序list.sort((a, b) -> a.getId().compareTo(b.getId()));//根据Id升序排序(简写)list.sort(paring(Message::getId));//根据Id降序排序(简写)list.sort(paring(Message::getId).reversed());System.out.println("===排序后如下===");list.stream().forEach(item -> System.out.println(item));}}1.5.2 多个字段组合排序private static void sortList(){List<Message> list = getMessageList();if (list != null && !list.isEmpty()){System.out.println("===排序前如下===");list.stream().forEach(item -> System.out.println(item));//根据多条件组合排序,先根据msg(升序),再根据id(升序)list.sort(paring(Message:: getMsg).thenComparing(Message::getId));//根据多条件组合排序,先根据msg(升序),再根据id(降序)list.sort(paring(Message:: getMsg).thenComparing(paring(Message::getId).reversed())); //根据多条件组合排序,先根据msg(降序),再根据id(降序)list.sort(paring(Message:: getMsg).thenComparing(Message::getId).reversed());//根据多条件组合排序,先根据msg(降序),再根据id(升序)list.sort(paring(Message:: getMsg).reversed().thenComparing(Message::getId));System.out.println("===排序后如下===");list.stream().forEach(item -> System.out.println(item));}}1.6 List<T>转List<Object>List<Long> idList =list.stream().map(Message::getId).collect(Collectors.toList());1.6.1 List<T>转List<Object> +去重//利⽤distinct()List<String> msgList =list.stream().map(Message::getMsg).distinct().collect(Collectors.toList());//利⽤Collectors.toSet()Set<String> msgList2 =list.stream().map(Message::getMsg).collect(Collectors.toSet());1.7 List<T>转Map<String, T>还是上⾯的测试数据,按Message的msg作为key,如果key重复就⽤第⼀个.private static void listToMap(){List<Message> list = getMessageList();Map<String, Message> map =list.stream().collect(Collectors.toMap(Message :: getMsg, a-> a, (k1, k2) -> k1));System.out.println(map.size());}原本List有4个元素,因为有2条msg="b"的数据,转map后取第⼀条1.7.1 forEach遍历Mapmap.forEach((k,v) -> {System.out.println(k + " -> " + v);});1.8 List<T>转Map<String, List<T>>Map<String, List<Message>> groupByMsg = list.stream().collect(groupingBy(Message::getMsg));groupByMsg.forEach((k, v) -> {System.out.println(k + " -> " + v.toString());});返回如下:a -> [Message(id=1, msg=a, sendTime=Fri May 15 17:36:30 CST 2020)]b -> [Message(id=2, msg=b, sendTime=Fri May 15 17:36:30 CST 2020), Message(id=4, msg=b, sendTime=Fri May 15 17:36:30 CST 2020)]c -> [Message(id=3, msg=c, sendTime=Fri May 15 17:36:30 CST 2020)]1.9 List<Map<String, Object>>转Map<String, List<Map<String, Object>>>Map<String, List<Map<String, Object>>> groupByGenderMap =pigMapList.stream().collect(groupingBy(e -> e.get("gender").toString()));1.10 List求和、求最⼤值、平均值private static void statisticsList(){List<Message> list = getMessageList();//求和Long sum= list.stream().mapToLong(Message::getId).sum();System.out.println("sum = " + sum);//求最⼤值Optional<Message> maxMassage = list.stream().collect(Collectors.maxBy(paring(Message::getId)));Long maxId = maxMassage.get().getId();System.out.println("maxId = " + maxId);LongSummaryStatistics lss = list.stream().collect(Collectors.summarizingLong(Message::getId));System.out.println("sum = " + lss.getSum());System.out.println("max = " + lss.getMax());System.out.println("min = " + lss.getMin());System.out.println("avg = " + lss.getAverage());}以上这篇java8实现list集合中按照某⼀个值相加求和,平均值等操作代码就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
JAVA基础部分测试题及答案

1. 编译java程序的命令是[B] ;运行java程序的命令是[A] ;产生java文挡的命令是[D] ;产生类型归档文件.jar的命令是[F] 。
A. javaB. javacC. serialverD. javadocE. policytoolF. jar2. 在一个java原文件中,import, class, package语句的顺序是[F] 。
A. import class packageB. class import packageC. package class importD. import package classE. class package importF. package import class3. 下面叙述正确的有[CDE] 。
A. 在一个java原文件中只能定义一个classB. 在一个java原文件中只能定义一个interfaceC. 在一个java原文件中可以定义多个classD. 在一个java原文件中可以定义多个interfaceE. 在一个java原文件中可以定义多个class和interfaceF. 在一个java原文件中只能定义public classG. java原文件的前缀一定是所包含类型的名字4. java程序中程序运行入口方法main的签名正确的有[AB] 。
A. public static void main(String args[])B. static public void main(String[] args)C. public void static main(String[] args)D. public void main(String args[])5. java程序中程序入口方法main的参数代表命令行输入参数,命令行参数从[A] 开始。
A. 0B. 1C. -16. 以下属于正确的java注释有[ACD] 。
A. //This is commentB. /*This is commentC. /**This is comment*/D. /*This is comment*/7. 以下能作为class, interface, method或variable有效标识符的有[ADF] 。
学生成绩管理系统(JAVA课程设计)

Java课程设计课题:学生成绩管理系统一、问题及功能分析1、身份验证,和使用系统的权限设置、判定。
2、实现同学的学号、性别、成绩等信息的录入、编辑3、提供对学号或姓名,进行成绩或所有信息的查询.4、计算学生平均成绩,显示最高成绩学生信息5、能实现按成绩、学号、姓名排序列出学生信息.6、能统计学生成绩分数段的分布(60以下、60~70、70~80、80~90、90~100)情况,并输出。
7、用文件保存数据,以便反复使用.二、概要设计import java。
lang.*;import java.io。
*;class Mytest{public static void main(String[]args)throws IOException{{int select;select = 1;Student stu[]= new Student[10];StudentMis mis=new StudentMis();Scanner sc = new Scanner(System.in);System。
out.println();System.out。
println(”—---—-—-————————-——-——-——-—---—--———-——");System.out。
println(”* *");System。
out.println(”欢迎进入学生成绩管理系统");System。
out。
println(”**”);System。
out.println(”-————--——-—-—---——-——--———-—-—----——--—");while(true){System。
out.println( );System。
out.println(" 请选择您的操作:");System.out.println(” 1.录入学生成绩信息;”);System.out.println(" 2.显示学生成绩信息;”);System。
Java程序设计作业

要求:一个院系一个年级的同学题目不能相同,所以选择题目时应避免做相同的题目,其它学院和年级的同学相对自由一点。
从22 道题目中任选一道,按实验指导书模式那样完成即可,写好大作业报告,同时写上自己的姓名、学号、学院和年级1、编写一个Java 应用程序,从键盘读取用户输入两个字符串,并重载3 个函数分别实现这两个字符串的拼接、整数相加和浮点数相加。
要进行异常处理,对输入的不符合要求的字符串提示给用户,不能使程序崩溃。
2、有工人,农民,教师,科学家,服务生,其中,工人,农民,服务生只有基本工资.教师除基本工资外,还有课酬(元/天),科学家除基本工资外,还有年终奖,请你写出相关类,将各种类型的员工的全年工资打印出来;3、创建一个复数类complex,对复数进行数学运算,复数具有如下格式:RealPart+ImaginaryPart*I其中,I 为-1的平方根。
要求如下:(1)利用浮点变量表示此类的私有数据。
提供两个构造方法,一个用于此类声明时对象的初始化;一个为带默认值得无参构造方法。
(2)提供两复数加、减、乘的运算方法。
(3)按格式(a,b)打印复数。
其中a 为实部,b 为虚部。
4、(1)编写一个圆类Circle,该类拥有:①一个成员变量Radius(私有,浮点型);// 存放圆的半径;②两个构造方法Circle( ) // 将半径设为0Circle(double r ) //创建Circle对象时将半径初始化为r③三个成员方法double getArea( ) //获取圆的面积double getPerimeter( ) //获取圆的周长void show( ) //将圆的半径、周长、面积输出到屏幕(2)编写一个圆柱体类Cylinder,它继承于上面的Circle 类。
还拥有:①一个成员变量double hight(私有,浮点型);// 圆柱体的高;②构造方法Cylinder (double r, double h ) //创建Circle 对象时将半径初始化为r③成员方法double getVolume( ) //获取圆柱体的体积void showVolume( ) //将圆柱体的体积输出到屏幕编写应用程序,创建类的对象,分别设置圆的半径、圆柱体的高,计算并分别显示圆半径、圆面积、圆周长,圆柱体的体积。
java实验

c. 计算两个 Point 对象之间距离的方法 distance(Point a, Point b); d. 获得当前坐标 x,y 值的方法 getX(),getY(); e. 设置坐标 x,y 值的方法 setX(),setY(); f. 重写 Point 类的 toString()方法,以格式(x,y)输出当前点的字符串; g. 统计应用程序中 Point 类对象的个数(使用 Point 类的类变量)。 package javaapplication1; import static ng.Math.*; public class Point { private int x,y; private static int count=0; public Point() {
this(0,0); count++; } public Point(int a, int b) { x=a; y=b; count++; } public int getx(){ return x;} public int gety(){ return y;} public int getcount() { return count;} public void setx(int newx){ x=newx;} public void sety(int newy){ y=newy;} public static double distance(Point a, Point b){
System.out.println(age); } } public class Main { public static void main(String[] args) {
JAVA第六次实验报告 接口

实验一1、实验题目体操比赛计算选手成绩的办法是去掉一个最高分和一个最低分再计算平均分,而学校考察一个班级的某科目的考试情况时,是计算全班学生的平均成绩。
Gymnastics 类和School 类都实现了ComputerAverage接口,但实现方式不同。
2、程序代码interface ComputerAverage{public double average(double x[]);}class Gymnastics implements ComputerAverage{public double average(double x[]){int count=;double aver=0,temp=0;for(int i=0;i<count;i++){for(int j=i;j<count;j++){if(x[j]<x[i]){temp=x[i];x[i]=x[j];x[j]=temp;}}}for(int i=1;i<count-1;i++){aver=aver+x[i];}if(count>2)aver=aver/(count-2);elseaver=0;return aver;}}class School implements ComputerAverage{public double average(double x[]){int count=;double aver=0;for(int i=0;i<count;i++){aver=aver+x[i];}if(count>0)aver=aver/count;return aver;}}public class Estimator {public static void main(String args[]){double a[]={,,,,,,};double b[]={89,56,78,90,100,77,56,45,36,79,98};ComputerAverage computer;computer=new Gymnastics();double result=(a);//computer调用average(double x[])方法,将数组a 传递给参数x"%n");"体操选手最后得分:%\n",result);computer=new School();result=(b);//computer调用average(double x[])方法,将数组b传递给参数x"班级考试平均分数:%\n",result);}}3、实验结果4、实验分析一个类可以实现多个接口,类通过使用关键字implements声明自己实现一个或多个接口,如果一个非抽象类实现了某个接口,那么这个类必须重写该接口的所有方法。
设计题目1.2输入某一个班级学生的Java程序设计期末考试成绩,以-1作为结束标记: (1)统计班级学生中,不

return i;
}
public static void main(String args[])
{
int i=-1;
float[] a=new float [100];
System.out.println("请输入学生成绩,以-1作为结束标记:l=0,y=0,p;
for(p=0;p<=i;p++)
{
if(a[p]<60&&a[p]>=0)b++;
else if(a[p]<70&&a[p]>=60)j++;
else if(a[p]<80&&a[p]>=70)z++;
else if(a[p]<90&&a[p]>=80)l++;
do{
Scanner n=new Scanner(System.in);
i++;
a[i]=n.nextFloat();
}while(a[i]!=-1);
rank(a,i);
System.out.println(avarge(a,i));
}
}
else if(a[p]>=90&&a[p]<=100)y++;
else ;
}
System.out.println("不及格人数:"+b);
System.out.println("及格人数:"+j);
java学生成绩统计程序设计

java学生成绩统计程序设计Java学生成绩统计程序设计Java是一种广泛应用于软件开发领域的编程语言。
在教育领域,Java也被广泛应用于计算机编程教学。
而学生成绩统计是教师们经常需要处理的任务之一。
为了提高教师们的工作效率,我们可以设计一个Java程序来自动完成学生成绩的统计。
本文将一步一步回答有关Java学生成绩统计程序设计的问题。
首先,我们需要明确程序的功能和需求。
一个基本的学生成绩统计程序需要能够记录学生的个人信息,并保存学生的成绩信息,同时还需要能够计算学生的平均分、最高分和最低分等统计指标。
因此,我们的程序需要包含学生类和成绩类,并且还需要有相应的方法来实现各种功能。
接下来,我们可以开始设计程序的结构。
在Java中,我们可以创建两个类:Student(学生类)和Grade(成绩类)。
Student类用于表示学生的个人信息,而Grade类用于表示学生的成绩信息。
首先,我们来设计Student类。
Student类需要包含学生的姓名、学号和班级等属性。
为了便于获取和设置学生的信息,我们可以使用私有变量,并提供公共的getter和setter方法。
javapublic class Student {private String name;private int studentId;private String className;public String getName() {return name;}public void setName(String name) { = name;}public int getStudentId() {return studentId;}public void setStudentId(int studentId) { this.studentId = studentId;}return className;}public void setClassName(String className) {this.className = className;}}接下来,我们来设计Grade类。
java复习题(程序填空)

java复习题(程序填空)程序填空题:1.public class Sum{public static void main(String [] args){int j=10;System.out.println("j is : "+j);calculate(j);System.out.println("At last, j is : "+j);}static void calculate (int j){for (int i = 0;i<10;i++)j++;System.out.println("j in calculate() is: "+j);}}输出结果为:j is : (1)j in calculate() is : (2)At last j is : (3)答案:(1)10 (2)20 (3) 102.按要求填空abstract class SuperAbstract{void a(){…}abstract void b();abstract int c(int i);} interface AsSuper{void x();}abstract class SubAbstract extends SuperAbstractimplements AsSuper {public void b(){…}abstract String f();}public class InheritAbstract extends SubAbstract{public void x(){…}public i nt c(int i ) {…}public String f(){…}public static void main(String args[]){InheritAbstract instance=new InheritAbstract();instance.x();instance.a();instance.b();instance.c(100);System.out.println(instance.f());}}在以上这段程序中:抽象类有:SuperAbstract和(1)(写出类名)非抽象类有:(2)(写出类名)接口有:(3)(写出接口名)AsSuper中的x()方法是(4)方法,所以在InheritAbstract中必须对它进行(5)答案:(1) SuperAbstract;(2) InheritAbstract;(3) AsSuper;(4) 抽象抽象抽象抽象;(5) 覆盖和实现覆盖和实现覆盖和实现覆盖和实现。
实验题java

实验1 简单Java程序调试✧基本题1)编写一个程序输出如下图案****** ************* *** ********* ** ****** ** ****** ** ****** ** ************ ** ** ****** ** ** ****** ** ** ********* **************2)编制applet程序,绘制一个长120、宽80的红色矩形,并在矩形内部绘制一个兰色内切椭圆。
✧提高题1)编写一个应用程序绘制一个如下的操作菜单。
*****************************| 1. 增加1个学生 || 2. 显示所有学生 || 3. 退出程序 || 请输入选择(1-3): |*****************************2)创建一个applet程序,绘制两个同心圆,园心显示“同心”两个汉字。
实验2 分支、循环程序设计✧基本题1)从键盘输入4个学生的成绩,找出最高分和最低分。
【提示】引入两个变量分别存放最高分和最低分,根据比较改变这两个变量值。
2)写一个程序输入一个整数n,输出相应三角形。
例如:N=4,则三角形如下:##########3)编写一个程序,用于输出Fibonacci数列的前20项。
4)输入一个百分制分数,输出其对应的五分制成绩,包括:优、良、中、及格、不及格。
5) 计算算式: 1-1/2+1/3-1/4+1/5-…-1/1006)输出九九乘法表,格式如下:1*1=1 1*1=2 1*3=3 ……2*1=1 2*2=2 2*3=3 …………9*1=1 9*2=18 9*3=27 ……✧提高题1)设有一元二次方程如下:aX2+bx+c=0试根据从键盘输入的a,b,c求解方程的根。
【提示】要考虑各种情形:一是a为0的情形,方程根为-c/b。
还有就是根据判别式Δ=b2 - 4ac进行判断,如果Δ.>0有两个实根;Δ=0,有一个实根;Δ<0,无实数解。
Java集合练习题求学生对象的平均年龄及按班级求平均分数

Java集合练习题求学⽣对象的平均年龄及按班级求平均分数有如下Student 对象,private String name;private int age;private int score;private String classNum;其中,classNum 表⽰学⽣的班号,例如“class05”。
有如下ListList list = new ArrayList();list.add(new Student(“Tom”, 18, 100, “class05”));list.add(new Student(“Jerry”, 22, 70, “class04”));list.add(new Student(“Owen”, 25, 90, “class05”));list.add(new Student(“Jim”, 30,80 , “class05”));list.add(new Student(“Steve”, 28, 66, “class06”));list.add(new Student(“Kevin”, 24, 100, “class04”));在这个list 的基础上,完成下列要求:1)计算所有学⽣的平均年龄2)计算各个班级的平均分主类:1import java.util.ArrayList;23public class TestDay17_1_2 {45public static void main(String[] args) {6 ArrayList<TestDay17_1_2_Student> al = new ArrayList<>();78 al.add(new TestDay17_1_2_Student("Tom", 18, 100, "class05"));9 al.add(new TestDay17_1_2_Student("Jerry", 22, 70, "class04"));10 al.add(new TestDay17_1_2_Student("Owen", 25, 90, "class05"));11 al.add(new TestDay17_1_2_Student("Jim", 30, 80, "class05"));12 al.add(new TestDay17_1_2_Student("Steve", 28, 66, "class06"));13 al.add(new TestDay17_1_2_Student("Kevin", 24, 100, "class04"));1415// 计算平均年龄16//定义总年龄及⼈数变量17int sumAge = 0;18int count = 0;19//遍历集合总年龄累加、⼈数⾃增20for (TestDay17_1_2_Student s : al) {21 sumAge += s.getAge();22 count++;23 }24//计算并输出平均年龄25double averageAge = (sumAge * 1.0) / count;26 System.out.println("平均年龄是:" + averageAge);2728//计算各班级平均分29// 创建储存计算分数的集合30 ArrayList<TestDay17_1_2_Score> alscore = new ArrayList<>();31// 遍历班级唯⼀插⼊成绩对象3233for (int i = 0; i < al.size(); i++) {34//过去当前学⽣对象35 TestDay17_1_2_Student student = al.get(i);36boolean flag = false;//标记没有重复班级名称37for (int j = 0; j < alscore.size(); j++) {38//获取当前班级成绩对象39 TestDay17_1_2_Score score = alscore.get(j);40//判断班级名称是否重复41if (student.getClassNum().equals(score.getClassName())) {42//重复标记设为真43 flag = true;44//修改当前成绩对象中分数和⼈数信息并跳出内循环45 score.setStudentNum(score.getStudentNum()+1);46 score.setSumScore(score.getSumScore() + student.getScore());47break;48 }49 }5051//判断flag如果为假(没有重复)则添加⼀个新的成绩对象52if (!flag) {53 alscore.add(new TestDay17_1_2_Score(student.getClassNum(),1,student.getScore()));54 }55 }56for (TestDay17_1_2_Score score : alscore) {57 System.out.println(score.toString());58 }59 }60 }学⽣类:1public class TestDay17_1_2_Student {23private String name;4private int age;5private int score;6private String classNum;7public TestDay17_1_2_Student() {8super();9// TODO Auto-generated constructor stub10 }11public TestDay17_1_2_Student(String name, int age, int score, String classNum) {12super(); = name;14this.age = age;15this.score = score;16this.classNum = classNum;17 }18public String getName() {19return name;20 }21public void setName(String name) { = name;23 }24public int getAge() {25return age;26 }27public void setAge(int age) {28this.age = age;29 }30public int getScore() {31return score;32 }33public void setScore(int score) {34this.score = score;35 }36public String getClassNum() {37return classNum;38 }39public void setClassNum(String classNum) {40this.classNum = classNum;41 }42 }成绩类:1public class TestDay17_1_2_Score {23private String className;4private int studentNum;5private int sumScore;67public TestDay17_1_2_Score() {8super();9// TODO Auto-generated constructor stub10 }11public TestDay17_1_2_Score(String className, int studentNum, int sumScore) { 12super();13this.className = className;14this.studentNum = studentNum;15this.sumScore = sumScore;16 }17public String getClassName() {18return className;19 }20public void setClassName(String className) {21this.className = className;22 }23public int getStudentNum() {24return studentNum;25 }26public void setStudentNum(int studentNum) {27this.studentNum = studentNum;28 }29public int getSumScore() {30return sumScore;31 }32public void setSumScore(int sumScore) {33this.sumScore = sumScore;34 }3536public double getAverageScore() {37return (this.sumScore * 1.0) / this.studentNum;38 }3940 @Override41public String toString() {42double averageScore = this.getAverageScore();43 String className = this.getClassName();44int studentNum = this.getStudentNum();45int sumScore = this.getSumScore();46return47 (new StringBuffer()).append(className)48 .append("班级有").append(studentNum)49 .append("个同学,总分:").append(sumScore)50 .append(",平均分:").append(averageScore).toString()51 ;52 }53 }。
用MAP实现学生成绩管理系统

Map.Entry<String, Student> meEntry = i.next(); Student student = meEntry.getValue(); tSet.add(new Integer(student.Grade)); }
} //利用 TreeSet 中学生的成绩,求出最大值,和最小值,first()就是最小值,last()就是最大 值 public void maxGrade() {
case '4': maTreeSet.averageGrade(); break;
case '5': maTreeSet.maxGrade();பைடு நூலகம்break;
case '6': maTreeSet.minGrade(); break;
case '7': maTreeSet.totalGrade(); break;
//可以不用上面注释了的代码,因为 Student 类中间定义了一个输出的方法 show().
me.getValue().show(); } } //根据学生 ID 查询学生信息 public void searchStudent() throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("请输入要查询学生的 ID:"); String string = br.readLine(); Student student = con.get(string); student.show(); } //把学生成绩加入到 TreeSet 中 public void inTreeSet() { Set set = con.entrySet(); Iterator<Map.Entry<String, Student>> i = set.iterator(); while(i.hasNext()) {
JAVA8新特性之List的各种用法(最大、最小、平均值、分组、求和、遍历、过滤、排序)

JAVA8新特性之List的各种⽤法(最⼤、最⼩、平均值、分组、求和、遍历、过滤、排序)构建⼀个User实体类供演⽰public class Users {/*** ID*/private Long id;/*** ⽤户名*/private String name;/*** 年龄*/private int age;/*** ⼯号*/private String jobNumber;/*** 性别*/private String sex;/*** 注册时间*/private Date entryDate;/*** 成员组织*/private BigDecimal familyMemberQuantity;private Long userId;public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getName() {return name;}public void setName(String name) { = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getJobNumber() {return jobNumber;}public void setJobNumber(String jobNumber) {this.jobNumber = jobNumber;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public Date getEntryDate() {return entryDate;}public void setEntryDate(Date entryDate) {this.entryDate = entryDate;}public BigDecimal getFamilyMemberQuantity() {return familyMemberQuantity;}public void setFamilyMemberQuantity(BigDecimal familyMemberQuantity) {this.familyMemberQuantity = familyMemberQuantity;}public Long getUserId() {return userId;}public void setUserId(Long userId) {erId = userId;}@Overridepublic String toString() {return "Users{" +"id=" + id +", name='" + name + '\'' +", age=" + age +", jobNumber='" + jobNumber + '\'' +", sex='" + sex + '\'' +", entryDate=" + DateFormatUtils.format(entryDate, "yyyy-MM-dd HH:mm:ss") +", familyMemberQuantity=" + familyMemberQuantity +'}';}}⼀、根据字段分组得到多个List集合构建⼀个产⽣Users的静态法/*** ⽣产虚拟⽤户** @return*/public static List<Users> produceUser() {List<Users> usersList = new ArrayList<>();for (int i = 1; i <= 10; i++) {Users users = new Users();users.setId(Long.valueOf(i));users.setName("kobe" + i);users.setAge(15 + new Random().nextInt(5));users.setJobNumber("jobNumber" + i);if (i % 2 == 0) {users.setSex("男");} else {users.setSex("⼥");}users.setEntryDate(new Date());users.setFamilyMemberQuantity(new BigDecimal(i));usersList.add(users);}return usersList;}利⽤Java8 特性,根据对象的某个属性进⾏分组@Testpublic void groupByGender() {List<Users> list = produceUser();// 根据性别进⾏分组Map<String, List<Users>> collect = list.stream().collect(Collectors.groupingBy(Users::getSex)); Set<Map.Entry<String, List<Users>>> entries = collect.entrySet();entries.forEach(item -> {// 性别男 / ⼥String gender = item.getKey();// 男集合 / ⼥集合List<Users> usersList = item.getValue();System.out.println(gender);usersList.forEach(user -> System.out.println(user));});}输出结果如下⼆、集合求和2.1 根据对象中的某个字段求和/*** 根据年龄字段求总和*/@Testpublic void getSumByStream() {List<Users> list = produceUser();int sum = list.stream().mapToInt(Users::getAge).sum();System.out.println("共计:" + list.size() + "个⽤户,所有年龄总和为:" + sum);// 求最⼤年龄Integer integer = list.stream().map(Users::getAge).max(Integer::compareTo).get();System.out.println(integer);// 得到最⼤年龄对象Users users = list.stream().max(paringInt(Users::getAge)).get();System.out.println(users);// 求平均年龄System.out.println(list.stream().mapToInt(Users::getAge).average().getAsDouble());// 求最⼤年龄System.out.println(list.stream().mapToInt(Users::getAge).max().getAsInt());}输出结果如下2.2 List<数值型> 求和/*** 根据List求和*/@Testpublic void getListSumByJava8() {List<Integer> listInt = new ArrayList();List<Double> listDoub = new ArrayList();for (int i = 0; i < 500; i++) {listInt.add(new Random().nextInt(1000));listDoub.add(new Random().nextDouble());}System.out.println("=======数值型Integer求和======");Integer integer = listInt.stream().reduce(Integer::sum).orElse(0);System.out.println(integer);System.out.println("=======数值型Double求和======");Double integer1 = listDoub.stream().reduce(Double::sum).orElse(0.00);System.out.println(integer1);// 取最⼤值System.out.println(listInt.stream().reduce(Integer::max).orElse(0));System.out.println(listInt.stream().mapToInt(Integer::valueOf).max().getAsInt());// 取最⼩值System.out.println(listInt.stream().reduce(Integer::min).orElse(0));// 取平均值System.out.println(listInt.stream().mapToInt(Integer::valueOf).average().getAsDouble());}输出结果如下三、遍历List集合/*** 遍历对象*/@Testpublic void traverseByJava8(){List<Users> list = produceUser();list.forEach(System.out::println);}输出结果如下四、过滤List集合/*** 过滤对象*/@Testpublic void filterByJava8() {List<Users> list = produceUser();System.out.println("原始数据为:");System.out.println("==============过滤后的数据为===============");list.forEach(System.out::println);//筛选出年龄⼤于3岁⼩于8岁的对象List<Users> collect = list.stream().filter(s -> s.getAge() > 13 && s.getAge() < 18).collect(Collectors.toList()); System.out.println("过滤结束后的数据为:");collect.forEach(System.out::println);}输出结果如下五、获取List中的最⼤最⼩值5.1 根据特定需求中的某个字段求最⼤最⼩/*** 求最⼤最⼩值,根据业务类型选择合适的类型值*/@Testpublic void maxOrMinByJava8() {List<Users> list = produceUser();//根据mapTO**得到最⼤最⼩ ---写法⼀double asDouble = list.stream().mapToDouble(Users::getAge).max().getAsDouble(); System.out.println("将最⼤值转换为Double类型进⾏展⽰,最⼤为:" + asDouble);double asDouble1 = list.stream().mapToDouble(Users::getAge).min().getAsDouble(); System.out.println("将最⼩值转换为Double类型进⾏展⽰,最⼩为:" + asDouble1);int asInt = list.stream().mapToInt(Users::getAge).max().getAsInt();System.out.println("将最⼤值转换为Int类型进⾏展⽰,最⼤为:" + asInt);//根据map得到最⼤最⼩ ---写法⼆(推荐)Integer integer = list.stream().map(Users::getAge).max(Integer::compareTo).get();System.out.println("将最⼤值转换为字段对应类型进⾏展⽰,最⼤为:" + integer);Integer integer1 = list.stream().map(Users::getAge).min(Integer::compareTo).get();System.out.println("将最⼩值转换为字段对应类型进⾏展⽰,最⼩为:" + integer1);}输出结果如下5.2 根据特定需求中的某个字段求平均值/*** 求最⼤最⼩值,根据业务类型选择合适的类型值*/@Testpublic void avgByJava8() {List<Users> list = produceUser();double avgAge = list.stream().mapToDouble(Users::getAge).average().getAsDouble(); System.out.println("平均年龄为:" + avgAge);}输出结果如下六、根据需求将List转为Map/*** List -> Map* 需要注意的是:* toMap 如果集合对象有重复的key,会报错Duplicate key ....* user1,user2的id都为1。