java使用数组java输入学生成绩输出成绩等级n个学生的java课程成绩,并打印java输入学生成绩输出成绩等级的所有成绩,最高成绩和最低成绩?

键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩)。按照总分从高到底输出到控制台分析:
定义学生类
创建一个集合
总分从高到低
录入信息
遍历集合
代码分为两部分:实现代码 和 Student类package com.cg.test;
import java.util.Comparator;
import java.util.Scanner;
import java.util.TreeSet;
/**
* @author life
* @create 2019-11-26 22:19
*
键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩)。按照总分从高到底输出到控制台
*
*
*
分析:
定义学生类
*
创建一个集合
*
总分从高到低
*
录入信息
*
遍历集合
*/
public class TreeSetDemo {
public static void main(String[] args) {
// 创建一个TreeSet集合
TreeSet<Student> ts = new TreeSet<Student>(new Comparator<Student>() {
@Override
public int compare(Student s1, Student s2) {
// 总分从高到低
int num = s2.getSum() - s1.getSum();
// 总分相同的不一定语文相同
int num2 = num == 0 ? s1.getChinese() - s2.getChinese() : num;
// 总分相同的不一定数序相同
int num3 = num2 == 0 ? s1.getMath() - s2.getMath() : num2;
// 总分相同的不一定英语相同
int num4 = num3 == 0 ? s1.getEnglish() - s2.getEnglish() : num3;
// 姓名还不一定相同呢
int num5 = num4 == 0 ? s1.getName().compareTo(s2.getName())
: num4;
return num5;
}
});
System.out.println("学生信息录入开始");
// 键盘录入5个学生信息
for (int x = 1; x <= 5; x++) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入第" + x + "个学生的姓名:");
String name = sc.nextLine();
System.out.println("请输入第" + x + "个学生的语文成绩:");
String chineseString = sc.nextLine();
System.out.println("请输入第" + x + "个学生的数学成绩:");
String mathString = sc.nextLine();
System.out.println("请输入第" + x + "个学生的英语成绩:");
String englishString = sc.nextLine();
// 把数据封装到学生对象中
Student s = new Student();
s.setName(name);
s.setChinese(Integer.parseInt(chineseString));
s.setMath(Integer.parseInt(mathString));
s.setEnglish(Integer.parseInt(englishString));
// 把学生对象添加到集合
ts.add(s);
}
System.out.println("学生信息录入完毕");
System.out.println("学习信息从高到低排序如下:");
System.out.println("姓名\t语文成绩\t数学成绩\t英语成绩");
// 遍历集合
for (Student s : ts) {
System.out.println(s.getName() + "\t" + s.getChinese() + "\t"
+ s.getMath() + "\t" + s.getEnglish());
}
}
}
Student类package com.cg.test;
/**
* @author life
* @create 2019-11-26 22:33
*/
public class Student {
//姓名
private
String name;
//语文成绩
private int chinese;
//数学成绩
private int math;
//英语成绩
private
int english;
public
Student(){};
public Student(String name, int chinese, int math, int english) {
this.name = name;
this.chinese = chinese;
this.math = math;
this.english = english;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getChinese() {
return chinese;
}
public void setChinese(int chinese) {
this.chinese = chinese;
}
public int getMath() {
return math;
}
public void setMath(int math) {
this.math = math;
}
public int getEnglish() {
return english;
}
public void setEnglish(int english) {
this.english = english;
}
public
int
getSum(){
return
chinese+math+english;
}
}
package com.oracle.core;
import java.util.Arrays;
import java.util.Scanner;
public class GetInput {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int[]score=new int[8];
int sum=0;
int avg=0;
int max=0;
int min=0;
System.out.println("请输入8个小于100的整数");
for(int i=0;i<score.length;i++)
{
score[i]=scanner.nextInt();
}
System.out.println("您已输入完毕");
System.out.println("后台开始计算...");
System.out.println("3");
System.out.println("2");
System.out.println("1");
for(int i=0;i<score.length;i++)
{
sum+=score[i];
}
System.out.println("学生成绩的总分是"+sum);
avg=sum/score.length;
System.out.println("学生成绩的平均分是"+avg);
Arrays.sort(score);
System.out.println("其中最低分是"+score[0]);
System.out.println("其中最高分是"+score[score.length-1]);
}
}
运行结果:
2、变量赋值,就是将数据放到开辟的这个空间语法:变量名 = 变量值;比如:qian = 1000;3、使用变量比如:System.out.println(qian);9.运算符的使用:1、赋值运算符(=),将等号右边的值赋给左边2、拼接运算符(+),将+左右两边的连起来表达式:就是符号(如加号、减号)与操作数(如b,3等)的组合,比如:b-1算术运算符:四则运算:+、-、*、/%(取模运算):除以一个数得到余数,就是求余数的运算的运算10.从键盘扫描输入的值:1、找到有扫描仪的商店,语法:import java.util.Scanner;写在public class的前面2、购买一台新的扫描仪,给它取一个名字语法:Scanner input = new Scanner(System.in);3、使用扫描仪的扫描功能如果扫描整数:使用input.nextInt();如果扫描小数:使用input.nextDouble();如果扫描字符串:使用input.next();11.类型转换:自动类型转换:1、必须两种类型互相兼容,比如:都是数值类型int和double,double和float2、转换成的类型一定要比被转换的类型要大,比如:int转换成doublefloat转换成double12.强制类型转换:语法:数据类型 变量名 = (数据类型)变量名;比如:double b = 3.14int a = (int)b;1、同类型的强制类型转换,比如:int a = (int)10.9;2、不同类型的强制类型转换,只有char和int可以,通过ASCII码表去转换比如:int b = (int)‘a’;13.运算符:1、赋值运算符 =,将右边的值赋给左边2、算术运算符+、-、、/、%,数学运算一样,先、/、%,后+、-3、关系运算符(比较运算符):>、<、>=、<=、==、!=4、逻辑运算符boolean类型(布尔类型):用于比较运算,只有两个值(true和false)14.运算符的优先级:1、最高优先级,英文状态下的小括号()2、最低优先级,赋值运算符=3、算术运算符>关系运算符>逻辑运算符>赋值运算符三、选择结构======1.if选择结构if基本选择结构语法:if(要满足的条件){如果条件为true的时候,进入大括号中满足条件之后得到的结果,不满足条件不会去执行}如果条件为false的时候,绕过大括号执行外面的条件只能是boolean类型的数据
1条件只能是boolean类型的数据
2.逻辑运算符:&&(shift+7):and符号,并且的意思,同时满足连接前后条件才为true,有一个不满足为false
(shirt+):或者的意思,只要前后两个条件一个为true,整个表达式就为true,同时为false才为false!(shirt+1):非的意思,就是取反,如果表达式为true,使用非就为false3.if-else选择结构:适用于基本选择条件的情况语法:if(要满足的条件){满足条件得到的结果}else{不满足条件的得到的结果}4.产生一个随机数:1、找到一个有随机数产生器的商店,语法:import java.util.Random;2、购买一台随机数产生器并取一个名字,语法:Random ran = new Random();3、使用这台随机数产生器的功能区产生随机数,语法:ran.nextInt(数字);ran.nextInt(10)表示产生一个0~9之间的随机数ran.nextInt(10)+1表示产生一个1~10之间的随机数5.多重if选择结构:适用于很多条件分支的情况语法:if(要满足的条件1){满足条件1得到的结果}else if(要满足的条件2){//默认不满足条件1满足条件1得到的结果}else if(要满足的条件n){//默认不满足条件2满足条件n得到的结果}else{//默认不满足条件n不满足所有条件得到的结果}只要找到一个满足的条件,执行完之后,结束选择结构6.嵌套if选择结构适用于在一个判断的基础再做一次判断的情况语法:if(要满足的条件1){满足条件1得到的结果if(要满足的条件2){满足条件2得到的结果}}else{不满足条件1得到的结果}==只能够比较数值类型,比较字符串是否相等,使用.equals(“要等于哪个字符串”);比如:sex.equals(“男”);10 == 10四、循环结构======1.循环结构:打印50份试卷,是从第1份开始打印,打印到第50份结束,重复打印试卷的过程绕操场跑10圈,从第1圈开始,到第10圈结束,重复跑步的过程做100道编程题,从第1题开始,到第100道结束,重复做题的过程2.循环的概念:重复完成某一件事情或者某一个操作,有一个开始位置和结束位置就叫做循环3.循环的特点:1、循环条件:也就是满足某个条件下才做重复的操作2、循环操作:也就是重复所做的事情或者操作4.while循环的语法:while(循环条件){满足条件的时候所做的循环操作}特点:先判断,再执行使用while循环的步骤:1、确定是否存在重复操作2、分析出循环条件和循环操作分别是什么3、套用while循环语法写出循环结构4、检查循环是否能正确退出5.do-while循环结构的语法:do{循环操作}while(循环条件);特点:先执行循环操作,再进行循环条件判断(先执行,再判断)6.while循环和do-while循环的差别:1、循环的次序不同,while循环是先判断,再执行,do-while是先执行,再判断;2、while循环在初始值不满足循环条件的时候一次都不会执行,do-while循环在初始值不满足循环条件的时候至少执行一次7.程序调试:断点调试的步骤:(每次调试后取消掉断点)1、设置断点:在左侧边栏的位置点击鼠标左键两次,可以生成一个断点2、进入调试模式:点击右键,选择debug as进入debug调试模式,程序会在设置断点的地方停下来3、单步执行,也就是一行一行的执行代码,按F6单步跳过执行代码4、观察变量值的变化5、找出错误的位置6、改正错误7、运行看结果是否正确**8.for循环结构语法:for(表达式1;表达式2;表达式3){循环操作}表达式1:循环从哪里开始,也就是循环的初始值,比如:int num = 1表达式2:循环的条件,也就是循环到哪里结束,比如:num <100表达式3:计数器,也就是每循环一次,初始值产生怎样的变化,比如:num++每个表达式之间用分号隔开,每个表达式都可以不写,但是分号不能省略
for循环的执行顺序:
①先去执行表达式1,也就是先去找初始值
②第二步去执行表达式2,也就是去找循环条件
③第三步去执行循环操作
④最后才去执行表达式3,也就是最后才实现初始值变化的过程
表达式1和表达3中可以写多个,表达式2,条件只能有一个
9.跳转语句的使用:break关键字:(通常和if选择结构一起使用)在switch使用break表示结束switch选择结构去执行选择结构外的代码在循环中使用break表示结束循环结构去执行循环结构外的代码
continue关键字:(通常和if选择结构一起使用)
continue只能够在循环结构中使用
在循环中使用continue表示结束当前这一次循环,然后开始下一次循环
使用场合:
break常用于switch结构和循环结构中continue一般用于循环结构中
作用(循环结构中)
break语句终止某个循环,程序跳转到循环块外的下一条语句
continue跳出本次循环,进入下一次循环
10.循环结构四要素:1、初始值,也就是循环要从哪里开始2、循环条件,循环要到哪里结束3、循环操作(循环体),就是需要重复做的某些操作4、计数器(迭代部分),就是每次重复之后,初始值要产生的变化11.while、do-while和for循环的区别:1、执行顺序不同while和for循环:先判断,再执行do-while循环:先执行,再判断
2、适用场景(循环次数固定推荐使用for循环)
for循环只适用于循环次数固定的情况
while和do-while循环无论循环次数是否固定都可以使用
五、数组====1.数组的概念在内存中开辟的一串连续的空间,用来存储相同数据类型的,比如:鞋柜只会放鞋子,衣柜只会用来放衣服2.数组的基本要素1、标识符(数组名):数组的名称,用来区分不同的数组2、数组元素:存放在数组空间中的数据3、数组下标:对数组中的空间进行编号,区分每个空间,数组下标从0开始,可以通过数组下标找到对应的空间4、元素类型:数组的数据类型3.数组的定义和使用1、声明数组:告诉计算机数组是什么类型语法:数据类型[] 数组名 或者 数据类型 数组名[]比如:String[] args;int[] nums,数组名的命名方式和变量命名方式一样
2、分配空间:告诉计算机要开辟一串连续的多长的空间
语法:数组名 = new 数据类型[数组长度];
比如:scores = new int[30];
第一步和第二步可以一起写
数据类型[] 数组名 = new 数据类型[数组长度];
3、赋值:向开辟好空间里面去存放数据
语法:数组名[数组下标] = 数据;
比如:scores[0] = 60;//表示将数组第一个空间存放了60这个整数
scores[1] = 80;
直接声明数组时就进行赋值
语法:数据类型[] 数组名 = new 数据类型[]{数据1,数据2,数据n};
数据类型[] 数组名 = {数据1,数据2,数据n};
注意:如果在声明数组时就直接赋值,那么不要写数组长度
比如:int[] scores = new int[]{60,80,100,50,60,70};
通过循环的方式动态的录入数据
循环从初始0开始,到数组的最大长度结束,每次加1
for(int i = 0;i < 5;i++){
System.out.println(“请输入第”+(i+1)+“名学生的成绩:”);
scores[i] = input.nextInt();
}
4、数据的使用:将存放在数组空间中的元素拿出来使用
使用循环的方式将存放在每个空间中数据拿出来使用
for(int i = 0;i < 5;i++){
System.out.println(“第”+(i+1)+“名的学生成绩为”+scores[i]);
}
数组名.length表示数组的长度
比如:int[] scores = new int[10];
scores.length = 10;//数组长度为多少,该值就为多少
4.数组的排序使用Arrays类,使用Arrays的步骤1、找到有Arrays的商店,语法:import java.util.Arrays;2、Arrays是一个公用的工具,不需要够买,只要去使用就可以,语法:Arrays.sort(数组名);它会将该数组进行一个升序的排列二重循环:在一个循环中再使用一个循环结构循环特点:外层循环循环一次,内层循环循环一遍(也就是从开始到结束循环完)while循环,do-while循环和for循环之间可以相互嵌套,也就是说while循环可以放while,do-while和for循环,其他两种一样5.二重循环中跳转语句的使用continue:如果continue在内层循环中,表示结束内层循环的本次循环,开始内层循环的下一次循环,如果在外层循环表示结束外层循环的本次循环,开始外层循环的下一次循环,也就是说,continue在哪一个循环的{}中,就结束哪一个循环的本次循环,开始该循环的下一次循环。break:如果break在内层循环中,表示结束内层循环的整个循环,开始执行内层循环外面语句,如果在外层循环中表示结束整个循环,也就是说,break在哪个循环中,结束的就是哪个循环的整个循环。六、类和对象======1.OO:Object Oriented表示面向对象的意思2.世界由什么组成:水,陆地,草,人,动物,植物,楼房,汽车等等由所有一切真实存在的东西组成,这些真实存在的东西就叫作对象属性:就是对象所具有特征方法:就是对象所执行的行为或操作对象:用来描述真实存在事物的一个实体,由一组属性和方法组成封装:对象的属性和方法通常封装在一起,共同体现事物的特性,两者不可分割类:将对象共同的属性和方法抽取出来就是类类是模子,定义对象所具有的属性和方法3.类和对象的关系:类是抽象的,对象是具体的实体对象是类的一个实体,类是对象的抽象概念4.定义一个类的步骤:1、新建一个class,给这个class取一个类名,名字和你想要定义的类型一致类名的取名方式,使用帕斯卡命名法,所有单词的首字母大写2、定义类的属性3、定义类的方法5.使用定义好的类:1、新建一个对象,语法:类名 对象名 = new 类名();比如:Car car1 = new Car();2、通过“.”操作符来使用这个对象的属性和方法六、类的无参方法========1.定义类的方法:语法:返回修饰符 返回值类型 方法名(){//具体实现方法的操作}比如:public void sayHello(){//具体实现方法的操作System.out.println(“你好”);}1、访问修饰符(在哪些地方能够使用这个方法),public公共的,最高级别2、返回值类型,执行完方法后能够得到什么数据void,表示没有返回值,也就是没有任何数据返回如果有数据返回,那么就需要使用return关键字返回一个数据,并且返回的数据类型和返回值的数据类型一致3、方法名(),方法名表示方法的名字4、方法体:具体实现方法的操作2.编写类的方法步骤:1、先定义方法的访问修饰符,先写没有返回值类型,定义方法名,方法名的命名采用见文识意的方式2、定义方法体,也就是写具体实现方法的操作3、判断方法是否有返回值,如果有,添加return关键字返回该数据,并修改返回值类型方法是怎么去实现,方法是怎么实现的只需要在定义方法的关心,使用的时候只要知道是哪一个方法是什么作用就可以了3.方法的调用:1、在同一个类调用同一类中的方法,只需要通过方法名()就可以指直接调用2、在不同类中调用方法,需要先new一个需要调用方法的类的对象,然后通过对象名.方法名的方式去调用方法调用方法的时候,实际上就是去执行方法体中的代码4.常见错误:1、返回值数据类型必须和返回值类型一致2、不可以返回多个值,也不能写多个返回值类型3、定义方法不能够相互嵌套4、程序逻辑代码(顺序、选择、循环结构)只能写在方法体中5.面向对象的编程:类的方法实现某个特定的功能,其他类不需要知道它如何实现,只需要知道它是用来干什么的6.全局变量:(成员变量)它是指定义在类中的变量,它在类中的任意位置都可以被识别比如:类的属性1、作用域:作用在类中任意位置2、初始值不同:如果没有给它赋值,系统会默认给它一个初始值,int类型为0,double为0.0,String为null3、在同一个类中不允许同名存在7.局部变量:它是指定义在方法体中变量,它只能在该方法中被识别1、作用域:作用在定义该变量的方法体中2、初始值不同:必须给它赋值后才能去使用,系统不会给它赋初始值3、在同一个类中,不同的方法中可以存在相同的命名,同名的两个变量没有任何关系在同一个类中,允许局部变量和成员变量命名相同,如果两个命名一样,在使用时,局部变量有更高优先级七、类的有参方法========1.带参数的方法:无参方法:在方法名()的括号中没有参数的方法有参方法:在方法名()的括号中有参数的方法2.定义有参方法的语法:访问修饰符 返回值类型 方法名(参数1、参数2、参数3…参数n){方法体(具体实现方法的过程)}3.参数:实际就是声明的一个变量,声明的变量使用“,”隔开在定义方法的时候,方法中的参数只是进行了声明,并没有赋值,这个参数就叫做形式参数,也就是形参;在调用方法的时候,对方法中参数进行赋值,这个参数就叫作实际参数,也就是实参自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)最后由于篇幅限制,小编在此截出几张知识讲解的图解《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!2.定义有参方法的语法:访问修饰符 返回值类型 方法名(参数1、参数2、参数3…参数n){方法体(具体实现方法的过程)}3.参数:实际就是声明的一个变量,声明的变量使用“,”隔开在定义方法的时候,方法中的参数只是进行了声明,并没有赋值,这个参数就叫做形式参数,也就是形参;在调用方法的时候,对方法中参数进行赋值,这个参数就叫作实际参数,也就是实参自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。[外链图片转存中…(img-5KcLYUeJ-1713302414004)][外链图片转存中…(img-REg5Zefu-1713302414005)][外链图片转存中…(img-QSrJdmDX-1713302414005)]既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)最后由于篇幅限制,小编在此截出几张知识讲解的图解[外链图片转存中…(img-cXKDYsZh-1713302414005)][外链图片转存中…(img-lF5hx37f-1713302414005)][外链图片转存中…(img-aH1Ckn5r-1713302414006)][外链图片转存中…(img-RY23NVRL-1713302414006)][外链图片转存中…(img-MSEsr7TU-1713302414006)]《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

我要回帖

更多关于 java输入学生成绩输出成绩等级 的文章

 

随机推荐