撰寫一個Java應用程式。設計一個學生類Students,包括屬性有:序號,學號,姓名,性別,專業,三門課程成績(數學,計算機,英語);包括方法有:求成績總分,成績平均分,除序號外各個屬性的賦值方法,各個屬性值的獲取方法等等。說明:每創建一個Students物件,則序號值增1;第一個學生物件的序號值為1。
撰寫一個主類StudentsDemo,在主方法中創建5個Students類的物件,按以下要求輸出相關資訊:
(1)各課程最高/最低分同學的序號、學號、姓名和該門課程分數
(2)總分最高/最低同學的序號、學號、姓名和所有課程分數
(3)輸入一個學號或者姓名,若存在這樣的學號或姓名則輸出該學生的所有資訊,否則輸出資訊不存在。
uj5u.com熱心網友回復:
package test;
import java.util.Arrays;
import java.util.Scanner;
public class StudentDamo{
public static void main(String[] args) {
Studnets[]temp=new Studnets[5];
for (int j = 0; j < temp.length; j++)
temp[j]=new Studnets(j,"張三"+j,"男",subject.數學.name(),new int[]{(int)(Math.random()*100+20),(int)(Math.random()*50+50),(int)(Math.random()*70+20)}) ;
//冒泡 交換學生物件
for (int i = 0; i < temp.length-1; i++) {
for (int j = 0; j < temp.length-i-1; j++) {
if(temp[j].getsumsocre()>temp[j+1].getsumsocre()) {//讓最后一個最大
Studnets stu=temp[j];
temp[j]=temp[j+1];
temp[j+1]=stu;
}
}
}
System.out.print("總分最大為\t");
temp[4].showinfo();
System.out.print("總分最小為\t");
temp[0].showinfo();
int fristsubject[]=new int[6];//前三最大 后三最小 學號
for (int i = 0; i < temp.length; i++) {
for (int j = 0; j < 3; j++) {
if( temp[fristsubject[j]].score[j]<temp[i].score[j]) //當我原來最大的小于先在的就交換過去
fristsubject[j]=i;
if( temp[fristsubject[j+3]].score[j]>temp[i].score[j]) //當我最小值的大于先在的就交換過去
fristsubject[j+3]=i;
}
}
for (int i = 0; i < 3; i++) {
System.out.println("------------");
System.out.println(subject.values()[i]+"最高分是\t");
temp[fristsubject[i]].info(i);
System.out.println(subject.values()[i]+"最低分是\t");
temp[fristsubject[i+3]].info(i);
}
Scanner input=new Scanner(System.in);
while(true) {
System.out.println("請輸入搜索的名字或學號");
String seachstr=input.next();
Studnets stu=seachStu(seachstr, temp);
if(stu!=null)
stu.showinfo();
else
System.out.println("沒有該學生");
}
}
public static Studnets seachStu(String str,Studnets[] arry) {
for (int i = 0; i < arry.length; i++) {
if(str.equals(arry[i].studentno+"")||str.equals(arry[i].name))
return arry[i];
}
return null;
}
}
class Studnets{
static int count=0;
public int stuindex;//序號
public int studentno;//學號
public String name;//名字
private String sex;//性別
private String major;//專業
public int[]score;//成績
public Studnets(int studentno, String name, String sex, String major,int[]ar) {
this.studentno = studentno;
this.name = name;
this.sex = sex;
this.major = major;
this.score=ar;
stuindex=++count;
}
public void info(int subjectid) {
System.out.println(stuindex+"序號"+studentno+"學號"+name+"姓名");
if(subjectid==-1) return;
System.out.print(subject.values()[subjectid]);
System.out.print(this.score[subjectid]);
System.out.println();
}
public void showinfo() {
info(-1);
System.out.println(Arrays.toString(subject.values()));
System.out.println(Arrays.toString(score));
}
public int getsumsocre() {
int sum=0;
for (int j = 0; j < 3; j++)
sum+=this.score[j];
return sum;
}
}
enum subject{
數學,
計算機,
英語
}
希望對你有幫助。。
uj5u.com熱心網友回復:
參考 1 樓 YangjulongTrue的回復:
package test;
import java.util.Arrays;
import java.util.Scanner;
public class StudentDamo{
public static void main(String[] args) {
Studnets[]temp=new Studnets[5];
for (int j = 0; j < temp.length; j++)
temp[j]=new Studnets(j,"張三"+j,"男",subject.數學.name(),new int[]{(int)(Math.random()*100+20),(int)(Math.random()*50+50),(int)(Math.random()*70+20)}) ;
//冒泡 交換學生物件
for (int i = 0; i < temp.length-1; i++) {
for (int j = 0; j < temp.length-i-1; j++) {
if(temp[j].getsumsocre()>temp[j+1].getsumsocre()) {//讓最后一個最大
Studnets stu=temp[j];
temp[j]=temp[j+1];
temp[j+1]=stu;
}
}
}
System.out.print("總分最大為\t");
temp[4].showinfo();
System.out.print("總分最小為\t");
temp[0].showinfo();
int fristsubject[]=new int[6];//前三最大 后三最小 學號
for (int i = 0; i < temp.length; i++) {
for (int j = 0; j < 3; j++) {
if( temp[fristsubject[j]].score[j]<temp[i].score[j]) //當我原來最大的小于先在的就交換過去
fristsubject[j]=i;
if( temp[fristsubject[j+3]].score[j]>temp[i].score[j]) //當我最小值的大于先在的就交換過去
fristsubject[j+3]=i;
}
}
for (int i = 0; i < 3; i++) {
System.out.println("------------");
System.out.println(subject.values()[i]+"最高分是\t");
temp[fristsubject[i]].info(i);
System.out.println(subject.values()[i]+"最低分是\t");
temp[fristsubject[i+3]].info(i);
}
Scanner input=new Scanner(System.in);
while(true) {
System.out.println("請輸入搜索的名字或學號");
String seachstr=input.next();
Studnets stu=seachStu(seachstr, temp);
if(stu!=null)
stu.showinfo();
else
System.out.println("沒有該學生");
}
}
public static Studnets seachStu(String str,Studnets[] arry) {
for (int i = 0; i < arry.length; i++) {
if(str.equals(arry[i].studentno+"")||str.equals(arry[i].name))
return arry[i];
}
return null;
}
}
class Studnets{
static int count=0;
public int stuindex;//序號
public int studentno;//學號
public String name;//名字
private String sex;//性別
private String major;//專業
public int[]score;//成績
public Studnets(int studentno, String name, String sex, String major,int[]ar) {
this.studentno = studentno;
this.name = name;
this.sex = sex;
this.major = major;
this.score=ar;
stuindex=++count;
}
public void info(int subjectid) {
System.out.println(stuindex+"序號"+studentno+"學號"+name+"姓名");
if(subjectid==-1) return;
System.out.print(subject.values()[subjectid]);
System.out.print(this.score[subjectid]);
System.out.println();
}
public void showinfo() {
info(-1);
System.out.println(Arrays.toString(subject.values()));
System.out.println(Arrays.toString(score));
}
public int getsumsocre() {
int sum=0;
for (int j = 0; j < 3; j++)
sum+=this.score[j];
return sum;
}
}
enum subject{
數學,
計算機,
英語
}
希望對你有幫助。。
太感謝了!!
uj5u.com熱心網友回復:
設定序號的默認全域變數,在構造方法中序號+1
創建的物件都扔到一個陣列里,遍歷陣列查詢自己想要查的內容
uj5u.com熱心網友回復:
參考 2 樓 QXYhhhh80 的回復: Quote: 參考 1 樓 YangjulongTrue的回復:
package test;
import java.util.Arrays;
import java.util.Scanner;
public class StudentDamo{
public static void main(String[] args) {
Studnets[]temp=new Studnets[5];
for (int j = 0; j < temp.length; j++)
temp[j]=new Studnets(j,"張三"+j,"男",subject.數學.name(),new int[]{(int)(Math.random()*100+20),(int)(Math.random()*50+50),(int)(Math.random()*70+20)}) ;
//冒泡 交換學生物件
for (int i = 0; i < temp.length-1; i++) {
for (int j = 0; j < temp.length-i-1; j++) {
if(temp[j].getsumsocre()>temp[j+1].getsumsocre()) {//讓最后一個最大
Studnets stu=temp[j];
temp[j]=temp[j+1];
temp[j+1]=stu;
}
}
}
System.out.print("總分最大為\t");
temp[4].showinfo();
System.out.print("總分最小為\t");
temp[0].showinfo();
int fristsubject[]=new int[6];//前三最大 后三最小 學號
for (int i = 0; i < temp.length; i++) {
for (int j = 0; j < 3; j++) {
if( temp[fristsubject[j]].score[j]<temp[i].score[j]) //當我原來最大的小于先在的就交換過去
fristsubject[j]=i;
if( temp[fristsubject[j+3]].score[j]>temp[i].score[j]) //當我最小值的大于先在的就交換過去
fristsubject[j+3]=i;
}
}
for (int i = 0; i < 3; i++) {
System.out.println("------------");
System.out.println(subject.values()[i]+"最高分是\t");
temp[fristsubject[i]].info(i);
System.out.println(subject.values()[i]+"最低分是\t");
temp[fristsubject[i+3]].info(i);
}
Scanner input=new Scanner(System.in);
while(true) {
System.out.println("請輸入搜索的名字或學號");
String seachstr=input.next();
Studnets stu=seachStu(seachstr, temp);
if(stu!=null)
stu.showinfo();
else
System.out.println("沒有該學生");
}
}
public static Studnets seachStu(String str,Studnets[] arry) {
for (int i = 0; i < arry.length; i++) {
if(str.equals(arry[i].studentno+"")||str.equals(arry[i].name))
return arry[i];
}
return null;
}
}
class Studnets{
static int count=0;
public int stuindex;//序號
public int studentno;//學號
public String name;//名字
private String sex;//性別
private String major;//專業
public int[]score;//成績
public Studnets(int studentno, String name, String sex, String major,int[]ar) {
this.studentno = studentno;
this.name = name;
this.sex = sex;
this.major = major;
this.score=ar;
stuindex=++count;
}
public void info(int subjectid) {
System.out.println(stuindex+"序號"+studentno+"學號"+name+"姓名");
if(subjectid==-1) return;
System.out.print(subject.values()[subjectid]);
System.out.print(this.score[subjectid]);
System.out.println();
}
public void showinfo() {
info(-1);
System.out.println(Arrays.toString(subject.values()));
System.out.println(Arrays.toString(score));
}
public int getsumsocre() {
int sum=0;
for (int j = 0; j < 3; j++)
sum+=this.score[j];
return sum;
}
}
enum subject{
數學,
計算機,
英語
}
希望對你有幫助。。
太感謝了!!
有用就把 帖子 結了吧 。。。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/86118.html
標籤:Eclipse
上一篇:求助各位大佬一個小問題,關于eladmin系統
下一篇:JAVA實作Socket代理 支持sock4與sock4代理 但不支持UDP,求大佬幫改得可以支持UDP