烦请各位看一下这个程序不知道是哪里错了
结果为什么总输出的是计算的是最后一个人的信息???import java.util.Scanner;
class Student{
String num;
String name;
int age;
char sex;
String major;
String classes;
Course[] course=new Course[5];
}
class Course{
int id;
String name;
int credithour;
int score;
Course(){}
Course(int id,String name,int credithour,int score){
this.id=id;
this.name=name;
this.credithour=credithour;
this.score=score;
}
} class Score{
float aver(Student stu){
float sum=0.0f;
for(int i=0;i<stu.course.length;i++){
sum+=stu.course[i].score;
}
return sum/stu.course.length;
}
float aver(Course course,Student stu[]){
float sum=0.0f;
for(int i=0;i<stu.length;i++)
sum+=stu[i].course[course.id].score;
return sum/stu.length;
}
}
class ScoreTest{
public static void main(String[] args){
Score score=new Score();
Scanner sc=new Scanner(System.in);
Student[] stu=new Student[3];
Course[] course=new Course[5];
String coursename[]={"计算机导论","操作系统","数据库原理","数据结构","软件工程"};
int credithour[]={3,4,3,4,2};
for(int i=0;i<course.length;i++)
{
course[i]=new Course(i,coursename[i],credithour[i],0);
}
for(int i=0;i<stu.length;i++){
System.out.println("请输入第"+(i+1)+"个学生的信息");
stu[i]=new Student();
System.out.print("学号:");
stu[i].num=sc.next();
System.out.print("姓名:");
stu[i].name=sc.next();
System.out.print("性别:");
stu[i].sex=sc.next().charAt(0);
System.out.print("专业:");
stu[i].major=sc.next();
System.out.print("班级:");
stu[i].classes=sc.next();
for(int j=0;j<course.length;j++){
stu[i].course[j]=course[j];//觉得这里有问题???
System.out.print("第"+(j+1)+"门课程的成绩:");
stu[i].course[j].score=sc.nextInt();//这里得到的值会不会覆盖前者???
}
System.out.println();
} for(int i=0;i<stu.length;i++){
System.out.println(stu[i].name+"的各科平均成绩:"+score.aver(stu[i]));
}
for(int i=0;i<course.length;i++){
System.out.println(course[i].name+"的平均成绩:"+score.aver(course[i],stu));
}
}
}
结果为什么总输出的是计算的是最后一个人的信息???import java.util.Scanner;
class Student{
String num;
String name;
int age;
char sex;
String major;
String classes;
Course[] course=new Course[5];
}
class Course{
int id;
String name;
int credithour;
int score;
Course(){}
Course(int id,String name,int credithour,int score){
this.id=id;
this.name=name;
this.credithour=credithour;
this.score=score;
}
} class Score{
float aver(Student stu){
float sum=0.0f;
for(int i=0;i<stu.course.length;i++){
sum+=stu.course[i].score;
}
return sum/stu.course.length;
}
float aver(Course course,Student stu[]){
float sum=0.0f;
for(int i=0;i<stu.length;i++)
sum+=stu[i].course[course.id].score;
return sum/stu.length;
}
}
class ScoreTest{
public static void main(String[] args){
Score score=new Score();
Scanner sc=new Scanner(System.in);
Student[] stu=new Student[3];
Course[] course=new Course[5];
String coursename[]={"计算机导论","操作系统","数据库原理","数据结构","软件工程"};
int credithour[]={3,4,3,4,2};
for(int i=0;i<course.length;i++)
{
course[i]=new Course(i,coursename[i],credithour[i],0);
}
for(int i=0;i<stu.length;i++){
System.out.println("请输入第"+(i+1)+"个学生的信息");
stu[i]=new Student();
System.out.print("学号:");
stu[i].num=sc.next();
System.out.print("姓名:");
stu[i].name=sc.next();
System.out.print("性别:");
stu[i].sex=sc.next().charAt(0);
System.out.print("专业:");
stu[i].major=sc.next();
System.out.print("班级:");
stu[i].classes=sc.next();
for(int j=0;j<course.length;j++){
stu[i].course[j]=course[j];//觉得这里有问题???
System.out.print("第"+(j+1)+"门课程的成绩:");
stu[i].course[j].score=sc.nextInt();//这里得到的值会不会覆盖前者???
}
System.out.println();
} for(int i=0;i<stu.length;i++){
System.out.println(stu[i].name+"的各科平均成绩:"+score.aver(stu[i]));
}
for(int i=0;i<course.length;i++){
System.out.println(course[i].name+"的平均成绩:"+score.aver(course[i],stu));
}
}
}
解决方案 »
- 各位高手帮帮忙!mysql装不了
- Java应用程序如何监听Linux系统的“Log out”,“Suspend”,“Hibernate”消息?
- 标记 <TBODY> 与 <BODY> 有什么区别啊
- eclipse导出包,运行那个包出现:could not find the main class program will exit;
- 为什么说软件包 javax.ejb 不存在
- ImageIcon 的使用方法
- 求助!哪位有javaexcelapi的那个jar文件,给我一份!谢谢了。他的官方网站以经上不去了。
- 请问哪里能下载到jbuider9或10啊?
- 请教 多谢!
- 求救
- jquery $.ajax()的一个问题
- 进来看看吧~有问题
String num;
String name;
int age;
char sex;
String major;
String classes;
Course[] course = new Course[5];
}class Course {
int id;
String name;
int credithour;
int score; Course() {
} Course(int id, String name, int credithour, int score) {
this.id = id;
this.name = name;
this.credithour = credithour;
this.score = score;
}
}class Score {
float aver(Student stu) {
float sum = 0.0f;
for (int i = 0; i < stu.course.length; i++) {
sum += stu.course[i].score;
}
return sum / stu.course.length;
} float aver(Course course, Student stu[]) {
float sum = 0.0f;
for (int i = 0; i < stu.length; i++)
sum += stu[i].course[course.id].score; return sum / stu.length; }}public class ScoreTest {
public static void main(String[] args) {
Score score = new Score();
Scanner sc = new Scanner(System.in);
Student[] stu = new Student[3];
Course[] course = new Course[5];
String coursename[] = { "计算机导论", "操作系统", "数据库原理", "数据结构", "软件工程" };
int credithour[] = { 3, 4, 3, 4, 2 };
for (int i = 0; i < course.length; i++) {
course[i] = new Course(i, coursename[i], credithour[i], 0);
}
for (int i = 0; i < stu.length; i++) {
System.out.println("请输入第" + (i + 1) + "个学生的信息");
stu[i] = new Student();
System.out.print("学号:");
stu[i].num = sc.next();
System.out.print("姓名:");
stu[i].name = sc.next();
System.out.print("性别:");
stu[i].sex = sc.next().charAt(0);
System.out.print("专业:");
stu[i].major = sc.next();
System.out.print("班级:");
stu[i].classes = sc.next();
for (int j = 0; j < course.length; j++) {
stu[i].course[j] = course[j];// 觉得这里有问题???
System.out.print("第" + (j + 1) + "门课程的成绩:");
stu[i].course[j].score = sc.nextInt();// 这里得到的值会不会覆盖前者???
}
System.out.println();
} for(int i = 0;i<stu.length;i++) {
for(int j = 0;j<course.length;j++) {
System.out.println(stu[i].course[j].score);
}
}
for (int i = 0; i < stu.length; i++) {
System.out.println(stu[i].name + "的各科平均成绩:" + score.aver(stu[i]));
} for (int i = 0; i < course.length; i++) {
System.out.println(course[i].name + "的平均成绩:"
+ score.aver(course[i], stu));
} }
}
都是一个对象
System.out.println("请输入第" + (i + 1) + "个学生的信息");
stu[i] = new Student();
System.out.print("学号:");
stu[i].num = sc.next();
System.out.print("姓名:");
stu[i].name = sc.next();
System.out.print("性别:");
stu[i].sex = sc.next().charAt(0);
System.out.print("专业:");
stu[i].major = sc.next();
System.out.print("班级:");
stu[i].classes = sc.next();
//修改
course = new Course[5];
for (int m = 0; m < course.length; m++) {
course[m] = new Course(m, coursename[m], credithour[m], 0);
}
for (int j = 0; j < course.length; j++) {
stu[i].course[j] = course[j];// 觉得这里有问题???
System.out.print("第" + (j + 1) + "门课程的成绩:");
stu[i].course[j].score = sc.nextInt();// 这里得到的值会不会覆盖前者???
}
谢谢!!!