java关于输入学生姓名和分数比较成绩的问题

import java.util.Scanner;
public class SearchMaxScore4 {
public static void main(String[] args) {
Scanner input = new Scanner (System.in);
System.out.print("请输入学生个数:");
int studentnumber = input.nextInt();

double scores[];
scores = new double[studentnumber];

String names[];
names = new String[studentnumber];
int n;
for( n = 1;n <= studentnumber;n++){
System.out.print("请输入学生姓名:");
Scanner sca = new Scanner(System.in);
names[n] = sca.next();
System.out.print("请输入学生分数:");
scores[n] = input.nextDouble();
}
double max = scores[1];
for(int i=1;i<scores.length;i++){
if(max<scores[i]){
max = scores[i];
n=i;
}
System.out.println("得分最高的学生姓名:" + names[n]);
}
}
}

我想知道我这段代码哪里错了? 为什么? 我该怎么改?

double scores[];
scores = new double[studentnumber];

double是变量基本类型,而不是类,所以不能new,你这样做可以实现,但是java是面向对象的,你应该把名字和成绩封装成一个Student类。

稍后给你代码追问

c语言倒是有结构体指针。java没有。非常感谢 。我百度下怎么封装类。

追答

这样写学生类

public class Student{
    private String name;
    private float score;
    public Student(String n,float s)
    {
        this.name=n;
        this.score=s;
    }
    public Student(){}
    /*---省略getter、setter方法----*/
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-26
Scanner input = new Scanner (System.in);
System.out.print("请输入学生个数:");
int studentnumber = input.nextInt();
double scores[]; scores = new double[studentnumber];
String names[]; names = new String[studentnumber];
for(int n = 0;n < studentnumber;n++)
{ System.out.print("请输入学生姓名:");
Scanner sca = new Scanner(System.in);
names[n] = sca.next();
System.out.print("请输入学生分数:");
scores[n] = input.nextDouble();
}
double max = scores[0];
String name="";
for(int i=0;i<scores.length;i++){
if(max<scores[i]){
max = scores[i];
}
name=names[i];
}
System.out.println("得分最高的学生姓名:" + name);
}
这是帮你修改好的,有好几个错误
1 变量n被重复使用,应该设为局部变量
2数组的遍历是从0开始的,而你都是默认从1开始
3得出最大值应该在遍历完成后,所以最后应该在循环外面输出本回答被提问者采纳
第2个回答  2014-03-30
楼上正解 换成包装类
相似回答