import java.util.Scanner;
class Students{//包括属性有:学号,姓名,性别,专业,三门课程成绩(计算机,数学,英语)
int number;//求成绩总分,成绩平均分,各个属性的赋值方法,各个属性值的获取方法
String name;
String sex;
String subject;
int computergrade;
int mathgrade;
int englishgrade;
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String isSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public int getComputergrade() {
return computergrade;
}
public void setComputergrade(int computergrade) {
this.computergrade = computergrade;
}
public int getMathgrade() {
return mathgrade;
}
public void setMathgrade(int mathgrade) {
this.mathgrade = mathgrade;
}
public int getEnglishgrade() {
return englishgrade;
}
public void setEnglishgrade(int englishgrade) {
this.englishgrade = englishgrade;
}
Students(){
}
int sum(int a,int b,int c) {//计算总分
int sum=0;
sum=a + b + c;
return sum;
}
int average(int sum) {//计算平均分
int average=0;
average=sum/3;
return average;
}
void Search(Students[] a) {//输入一个学生的学号或者姓名,输出该学生的所有信息。 //查找学生
int cont = -1;
Scanner in = new Scanner(System.in);
System.out.println("请输入学号或姓名");
String search = in.nextLine();
for (int i = 0; i < 5; i++) {//equals比较字符串是否相等
if (a[i].name.equals(search) || a[i].name.equals(search)) {
cont = i;
break;
}
}
if (cont == -1) {
System.out.println("信息不存在");
} else {
System.out.println(a[cont].number + a[cont].name +a[cont].sex+a[cont].subject+a[cont].computergrade+a[cont].mathgrade+a[cont].englishgrade);
}
}
void compare(Students[] a ) {//数学课程(输入的第2门课程)最高分同学学号、姓名和课程分数
int change=0;
for(int i=0;i<4;i++) {
for(int j=0;j<3-i;j++) {
if(a[j].mathgrade<a[j+1].mathgrade) {
change=a[j].mathgrade;
a[j].mathgrade=a[j+1].mathgrade;
a[j+1].mathgrade=change;
}
}
}
System.out.println( a[0].number + a[0].name +a[0].computergrade+a[0].mathgrade+a[0].englishgrade);
}
void extreme(Students[] a ){//总分最高与最低同学学号、姓名和课程分数
int []sum=new int[5];
for(int i=0;i<5;i++) {
sum[i]=a[i].sum(computergrade, englishgrade, mathgrade);
}
int change=0;
for(int i=0;i<4;i++) {
for(int j=0;j<3-i;j++) {
if(sum[j]<sum[j+1]) {//sum[0]max sum[4]min
change=sum[j];
sum[j]=sum[j+1];
sum[j+1]=change;
}
}
}
for(int i=0;i<5;i++) {
if(sum[0]==a[i].sum(computergrade, englishgrade, mathgrade)) {
System.out.println(a[i].number + a[i].name +a[i].computergrade+a[i].mathgrade+a[i].englishgrade);
}
if(sum[4]==a[i].sum(computergrade, englishgrade, mathgrade)) {
System.out.println(a[i].number + a[i].name +a[i].computergrade+a[i].mathgrade+a[i].englishgrade);
}
}
}
void judge(Students[] a) {//有没有这样的学生存在:
//总分大于所有学生的平均成绩,但是至少有一门课不及格(低于60分)。
//若有,按行输出这些学生的全部信息;若没有,输出NOT EXIST。
int []sum=new int[5];
for(int i=0;i<5;i++) {
sum[i]=a[i].sum(computergrade, englishgrade, mathgrade);
}
int []average=new int[5];
for(int i=0;i<5;i++) {
average[i]=sum[i]/3;
}
for(int i=0;i<5;i++) {
for(int j=0;j<5;j++) {
if(sum[i]>average[j]&&(a[i].computergrade<60||a[i].englishgrade<60||a[i].mathgrade<60)) {
System.out.println(a[i].number + a[i].name +a[i].sex+a[i].subject+a[i].computergrade+a[i].mathgrade+a[i].englishgrade);
}else {
System.out.println("NOT EXIST");
}
}
}
}
}
public class StudentsDemo {
public static void main(String args[]) {
Students[] a = new Students[5];//001 aa male math 80 85 78
Scanner reader=new Scanner(System.in);
for(int i=0;i<5;i++) {
a[i]=new Students();
a[i].number=reader.nextInt();
a[i].name=reader.nextLine();
a[i].sex=reader.nextLine();
a[i].subject=reader.nextLine();
a[i].computergrade=reader.nextInt();
a[i].mathgrade=reader.nextInt();
a[i].englishgrade=reader.nextInt();
}
Students stu=new Students();
stu.Search(a);
stu.compare(a);
stu.extreme(a);
stu.judge(a);
}
}
运行效果和源代码如上,但这个运行效果我看不太懂,即使后来在循环结构中添加了break也没有改善,望指点
你发了个实体类代码,没有发循环体的代码