*2、通过类和类继承,定义学生基本信息(学号、姓名、性别、年龄),
* 然后定义学生成绩类(定义为基本信息类的子类),
* 包括课程门数,每门课程的成绩(用一维数组表示)、
* 课程名称(用String类型一维数组表示)。
* 使用学生基本信息类和成绩信息类可实现学生基本信息输入、
* 成绩输入、学生人数和课程门数由输入决定。
* 能完成学生成绩表输出(含每门课程成绩,总平均成绩),
* 学生成绩表按总分从高到低排序输出?
* 然后定义学生成绩类(定义为基本信息类的子类),
* 包括课程门数,每门课程的成绩(用一维数组表示)、
* 课程名称(用String类型一维数组表示)。
* 使用学生基本信息类和成绩信息类可实现学生基本信息输入、
* 成绩输入、学生人数和课程门数由输入决定。
* 能完成学生成绩表输出(含每门课程成绩,总平均成绩),
* 学生成绩表按总分从高到低排序输出?
import java.util.Scanner;
public class student{
public int sNo,sAge,sNu;
public String sNa,sSex;
student(){
sNo=28;
sAge=21;
sNa="许仙";
sSex="男";
}
student(int no,int age,String na,String sex ){
sNo=no;
sAge=age;
sNa=na;
sSex=sex;
}
public int getsNo(){
return sNo;
}
public int setsNo(int _sNo){
return sNo=_sNo;
}
public String getsNa(){
return sNa;
}
public String setsNa(String _sNa){
return sNa=_sNa;
}
public String getsSex(){
return sSex;
}
public String setsSex(String _sSex){
return sSex=_sSex;
}
public int getsAge(){
return sAge;
}
public int setsAge(int _sAge){
return sAge=_sAge;
}
public static void main(String args[]){
// student s=new student();
Result r =new Result();
r.getStudent();
r.getCourse();
}
}
class Result extends student{
public int cNo;
public int score;
public String cNa;
Result(){
} void getStudent(){
Scanner in=new Scanner(System.in);
System.out.print("学号: ");
sNo=in.nextInt();
System.out.print("姓名: ");
sNa =in.next();
System.out.print("性别: ");
sSex =in.next();
System.out.print("年龄: ");
sAge =in.nextInt();
} void getCourse(){
Scanner in=new Scanner(System.in);
System.out.print("学生人数: ");
sNu= in.nextInt();
System.out.print("课程数: ");
int c1 =in.nextInt();
if(c1==3){
System.out.print("课程名: ");
String cNa1=in.next();
System.out.print("分数: ");
int score1=in.nextInt();
System.out.print("课程名: ");
String cNa2=in.next();
System.out.print("分数: ");
int score2=in.nextInt();
System.out.print("课程名: ");
String cNa3=in.next();
System.out.print("分数: ");
int score3=in.nextInt();
System.out.println("学号: "+sNo+" 姓名: "+sNa+" 性别: "+sSex+" 年龄: "+sAge);
System.out.println("学生人数: "+sNu+" 课程数: "+c1);
if(score1>score2 && score1>score3 && score2>score3)
{
System.out.println("课程名: "+cNa1+" 分数:"+score1 +"分");
System.out.println("课程名: "+cNa2+" 分数:"+score2+"分" );
System.out.println("课程名: "+cNa3+" 分数:"+score3+"分" );
double d=(score1+score2+score3)/3;
System.out.println(sNa+"的平均成绩: "+d+"分");
}else if(score2>score1 && score2>score3 && score1>score3)
{
System.out.println("课程名: "+cNa2+" 分数:"+score2+"分" );
System.out.println("课程名: "+cNa1+" 分数:"+score1 +"分");
System.out.println("课程名: "+cNa3+" 分数:"+score3+"分" );
double d=(score1+score2+score3)/3;
System.out.println(sNa+"的平均成绩: "+d+"分");
}else if(score2>score1 && score2>score3 && score3>score1)
{
System.out.println("课程名: "+cNa2+" 分数:"+score2+"分" );
System.out.println("课程名: "+cNa3+" 分数:"+score3+"分" );
System.out.println("课程名: "+cNa1+" 分数:"+score1 +"分");
double d=(score1+score2+score3)/3;
System.out.println(sNa+"的平均成绩: "+d+"分");
}
else if(score3>score1 && score3>score2 && score2>score1)
{
System.out.println("课程名: "+cNa3+" 分数:"+score3+"分" );
System.out.println("课程名: "+cNa2+" 分数:"+score2+"分" );
System.out.println("课程名: "+cNa1+" 分数:"+score1 +"分");
double d=(score1+score2+score3)/3;
System.out.println(sNa+"的平均成绩: "+d+"分");
} else if(score3>score1 && score3>score2 && score1>score2)
{
System.out.println("课程名: "+cNa3+" 分数:"+score3+"分" );
System.out.println("课程名: "+cNa1+" 分数:"+score1 +"分");
System.out.println("课程名: "+cNa2+" 分数:"+score2+"分" );
double d=(score1+score2+score3)/3;
System.out.println(sNa+"的平均成绩: "+d+"分");
}
//System.out.print("课程名:"+cNa);
// System.out.println(sAge);
} }
}
我用了最愚蠢的方法做了,我想知道我这样做的格式对不对?
问题1:有时候好郁闷,不知道弄那么多个setName方法然后return出来这些有什么用..
问题2:哪位高手可以告诉下我数组输入后怎么存,以这个题目为例,我要输入5个课程,会出现5个输入的操作,最后能全部输出显示出来..
我之前输入后输出的都只是最后一个数,不能把输入的全部输出..求高手讲解!新手拜托了!
private int id;
private String name;
private String sex;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}public class Record extends Basic{
private int count=0;//课程门数
private Map<String,Double> records=new HashMap<String,Double>();//课程的成绩
private String courseName;//课程的名字
public Map<String, Double> getRecords() {
return records;
}
public void setRecords(Map<String, Double> records) {
this.records = records;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public String getCourseName() {
return courseName;
}
public void setCourseName(String courseName) {
this.courseName = courseName;
}
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.println("请输入学生的人数:");
int studentCount=sc.nextInt();
for(int i=1;i<=studentCount;i++){
Record r=new Record();
System.out.println("请输入"+i+"学生的学号:");
int id=sc.nextInt();
System.out.println("请输入"+i+"学生的姓名:");
String name=sc.next();
System.out.println("请输入"+i+"学生的性别:");
String sex=sc.next();
System.out.println("请输入"+i+"学生的年龄:");
int age=sc.nextInt();
System.out.println("请输入"+i+"学生有几门课程:");
int count=sc.nextInt();
for(int j=1;j<=count;j++){
r.setId(id);
r.setName(name);
r.setSex(sex);
r.setAge(age);
r.setCount(count);
System.out.println("请输入第"+j+"门课程名:");
String courseName=sc.next();
r.setCourseName(courseName);
System.out.println("请输入第"+j+"门课程成绩:");
Double record=sc.nextDouble();
HashMap<String,Double> map=new HashMap<String,Double>();
r.getRecords().put(courseName, record);
}
System.out.println("姓名:"+r.getName());
Set<Entry<String,Double>> set=r.getRecords().entrySet();
Entry[] array = r.getRecords().entrySet().toArray(new Entry[set.size()]);
Arrays.sort(array,new Comparator<Object>(){
@Override
public int compare(Object o1, Object o2) {
double value1=Double.parseDouble(((Entry)o1).getValue().toString());
double value2=Double.parseDouble(((Entry)o2).getValue().toString());
return value1>value2?0:value1<value2?1:-1;
}
});
System.out.println("各科成绩:"+Arrays.toString(array));
Double sum=0D;
for(Double record:r.getRecords().values()){
sum+=record;
}
System.out.println("总分:"+sum);
System.out.println("平均分:"+sum/set.size());
}
}
}
还真有点绕,我个人觉得课程名称用Map更好,因为输出各科成绩的时候不能只输分数吧
好多的错误啊..
怎么没有主方法的?