空指针异常,是因为Student类型数组新建之后,并没有传递对象给数组元素,所以出现空指针,要对元素进行对象初始化。
两个正确,一个错误一个超时,难受。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int p=0,m=0,n=0,index=0,tnum=0;
Scanner sc=new Scanner(System.in);
p=sc.nextInt();
m=sc.nextInt();
n=sc.nextInt();
String[][] pr=new String[p][2];
int count=0;
for(int i=0;i<p;i++){
pr[i][0]=sc.next();
pr[i][1]=sc.next();
if (Integer.parseInt(pr[i][1])>=200){
count++;
}
}
String[][] mid=new String[m][2];
for(int i=0;i<m;i++){
mid[i][0]=sc.next();
mid[i][1]=sc.next();
}
String[][] finals=new String[n][2];
for(int i=0;i<n;i++){
finals[i][0]=sc.next();
finals[i][1]=sc.next();
}
/*以上为输入部分,接下来给Student对象赋值,将编程成绩超过200分的保存起来*/
Student[] student=new Student[count];
int c=0;
for (int j=0;j<p;j++){
if (Integer.parseInt(pr[j][1])>=200){
student[c]=new Student();
student[c].name=pr[j][0];
student[c].pr=Integer.parseInt(pr[j][1]);
c++;
}
}
for (int i=0;i<student.length;i++){
for (int j=0;j<m;j++){
if (student[i].name.equals(mid[j][0])){
student[i].mid=Integer.parseInt(mid[j][1]);
}
}
}
for (int i=0;i<student.length;i++){
for (int j=0;j<n;j++){
if (student[i].name.equals(finals[j][0])){
student[i].finals=Integer.parseInt(finals[j][1]);
}
}
}
/*以上是将编程成绩200分以上的人的属性赋值,接下来需要获取score,编写函数*/
for (int i=0;i<student.length;i++){
getscore(student[i]);
}
order(student);
for (int i=0;i<student.length;i++){
if (student[i].score>=60)
System.out.println(student[i].name+" "+student[i].pr+" "+student[i].mid+" "+student[i].finals+" "+student[i].score);
}
}
public static class Student{
String name;
int pr,mid=-1,finals,score;
}
public static int getscore(Student stu){
if (stu.mid>stu.finals){
stu.score=(int)Math.round(stu.mid*0.4+stu.finals*0.6);
}else{
stu.score=(int)Math.round(stu.finals);
}
return stu.score;
}
/*接下来编写按成绩减序的程序 35.2 48.6*/
public static void order(Student[] stu){
Student temp;
for (int i=stu.length-1;i>0;i--){
for (int j=i-1;j>=0;j--){
if (stu[i].score>stu[j].score){
temp=stu[i];
stu[i]=stu[j];
stu[j]=temp;
}
if (stu[i].score==stu[j].score){
Student t;
if (stu[i].name.charAt(0)>stu[j].name.charAt(0)){
t=stu[i];
stu[i]=stu[j];
stu[j]=t;
}
}
}
}
}
}