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] 。