
请帮忙看看这个java小程序如何改正
publicclassStudentExam{publicclassStudent{Stringname;int[]score;publicStudent(Stringn...
public class StudentExam {
public class Student {
String name;
int[] score;
public Student(String name, int x, int y, int z) {
this.name=name;
this.score={x,y,z};
}
public String toString() {
String s = "[" + name;
for (int i = 0; i<this.arr.length; i++) {
s+=","+arr[i];
}
s += "]";
return s;
}
public int total() {
int sum = 0;
for (int i = 0;i<this.arr.length ; i++) {
sum+=arr[i];
}
return sum;
}
}
public static void main(String[] args) {
Student[] data = {
new Student("Alice" , 70, 80, 90),
new Student("Bob" , 60, 50, 70),
new Student("Taro" , 80, 60, 90),
new Student("Hanako", 90, 40, 80),
};
for (int i = 0; i < data.length; i++) {
System.out.println(data[i] + " -> " + data[i].total());
}
}
}
编译之后this.score={x,y,z};这里显示有问题,
然后主函数说是需要class,interface和enum,我看了看不少分号啊。
请告诉我错误原因和改正方法,谢谢。
最后的结果应该是
[Alice,70,80,90] -> 240
[Bob,60,50,70] -> 180
[Taro,80,60,90] -> 230
[Hanako,90,40,80] -> 210
这样。 展开
public class Student {
String name;
int[] score;
public Student(String name, int x, int y, int z) {
this.name=name;
this.score={x,y,z};
}
public String toString() {
String s = "[" + name;
for (int i = 0; i<this.arr.length; i++) {
s+=","+arr[i];
}
s += "]";
return s;
}
public int total() {
int sum = 0;
for (int i = 0;i<this.arr.length ; i++) {
sum+=arr[i];
}
return sum;
}
}
public static void main(String[] args) {
Student[] data = {
new Student("Alice" , 70, 80, 90),
new Student("Bob" , 60, 50, 70),
new Student("Taro" , 80, 60, 90),
new Student("Hanako", 90, 40, 80),
};
for (int i = 0; i < data.length; i++) {
System.out.println(data[i] + " -> " + data[i].total());
}
}
}
编译之后this.score={x,y,z};这里显示有问题,
然后主函数说是需要class,interface和enum,我看了看不少分号啊。
请告诉我错误原因和改正方法,谢谢。
最后的结果应该是
[Alice,70,80,90] -> 240
[Bob,60,50,70] -> 180
[Taro,80,60,90] -> 230
[Hanako,90,40,80] -> 210
这样。 展开
2个回答
展开全部
这里 int[] score; 初始化时没有分配内存空间,
所以后面不可以直接这样赋值 this.score={x,y,z};
所以后面不可以直接这样赋值 this.score={x,y,z};
追问
这样啊因为这是一个填空,所以题目原有的部分是不能动的,int[]score是原题目的,所以只能修改this.score这里
追答
所以在给 this.score 赋值前必须先用 new 分配空间。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你改成这样试一试吧:this.score=new int[]{x,y,z};
追问
不行呢,这样下面就不对了,就是主函数设置new student,是非static的变量- -
追答
仔细看了下,你的代码写得有点乱。不知道你是要把Student做为内部类使用吗?
我想你应该不是这么想的吧。若不是,就这么改
public class StudentExam {//这行去掉吧
public class Student {
最后面再去掉一个大括号吧。
还有this.arr.length
这个应该用this.score.length吧
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询