//实例化几个课程对象并在泛型集合对象中保存课程的信息
ArrayList<Course> courses=new ArrayList<Course>();
Course xo=new Course("C001","嵌入式编程原理");
Course xp=new Course("C002","计算机专业英语");
Course x=new Course("C003","微机接口与技术");
courses.add(xo);
courses.add(xp);
courses.add(x);
//实例化几个成绩对象并在泛型集合对象中保存成绩的信息
ArrayList<Grade> grades=new ArrayList<Grade>();
Grade xm=new Grade("S001","C001",80);
Grade xh=new Grade("S001","C002",70);
Grade xj=new Grade("S001","C003",90);
Grade xa=new Grade("S002","C001",69);
Grade xs=new Grade("S002","C002",85);
Grade xd=new Grade("S002","C003",92);
Grade xf=new Grade("S003","C001",88);
Grade xg=new Grade("S003","C002",80);
Grade xl=new Grade("S003","C003",87);
grades.add(xm);
grades.add(xh);
grades.add(xj);
grades.add(xa);
grades.add(xs);
grades.add(xd);
grades.add(xf);
grades.add(xg);
grades.add(xl);
//统计学生人数和总分
for(int i=0;i<courses.size();i++){
for(int j=0;j<grades.size();j++){
if(courses.get(i).courseID.equals(grades.get(j).courseID)){
count[i]++; //参考人数+1
//累计求和
sums[i]=sums[i]+grades.get(j).score;
}
}
Course和Student类里面只有几个简单的变量
运行时提示:
符号: 变量 courseID
位置: 类 Grade
if(courses.get(i).courseID.equals(grades.get(j).courseID)){
^
想courseID应该是定义在Course中。
从courses得到对象后,需要强制转换为Course
是私有的,还是公有的呢?
很怀疑是访问权限问题。
==》在bean中是private的吧?,改成这样的:if((courses.get(i)).getCourseId().equals((grades.get(j)).getCourseId())){
String courseID;
String courseName;
public Course(String courseID, String courseName) {
super();
this.courseID = courseID;
this.courseName = courseName;
}
public Course() {
super();
}}
public class Grade {
String courseID;
int score;
String grade; public Grade(String grade, String courseID, int score) {
super();
this.courseID = courseID;
this.score = score;
this.grade = grade;
}}
两个类这样,经测试你的代码没问题,如果需要查找请发一下类的代码,有可能是权限问题
类 Grade 属性 courseID 类型,大小写
瞎猜..
class Course {
String CourseID;
String Coursename;
Course(){
}
Course(String courseID,String courname){
this.CourseID=CourseID;
this.Coursename=Coursename;
}
void setName(String Courname){
this.Coursename=Coursename;
}
String getName(){
return Coursename;
}
void setCourseID(String CourseID){
this.CourseID=CourseID;
}
String getCourseID(){
return CourseID;
}
}
//成绩类
class Grade {
String stuID;
String CourseID;
int score;
Grade(){
}
Grade(String stuID,String CourseID,int score){
this.stuID=stuID;
this.CourseID=CourseID;
this.score=score;
}
void setstuID(String stuID){
this.stuID=stuID;
}
String getstuID(){
return stuID;
}
void setCourseID(String CourseID){
this.CourseID=CourseID;
}
String getCourseID(){
return CourseID;
}
void getscore(int score){
this.score=score;
}
int setscore(){
return score;
}
}Student类和Course类是这样的
各位帮帮忙,不胜感激啊
import java.util.Hashtable;
//学生类
class Student{
String name;
String stuID;
Student(){
}
Student(String name,String stuID){
this.name=name;
this.stuID=stuID;
}
void setName(String name){
this.name=name;
}
String getName(){
return name;
}
void setstuID(String stuID){
this.stuID=stuID;
}
String getstuID(){
return stuID;
}
void printInfo(){
System.out.println (stuID+name);
}
}
//课程类
class Course {
String CourseID;
String Coursename;
Course(){
}
Course(String courseID,String courname){
this.CourseID=CourseID;
this.Coursename=Coursename;
}
void setName(String Courname){
this.Coursename=Coursename;
}
String getName(){
return Coursename;
}
void setCourseID(String CourseID){
this.CourseID=CourseID;
}
String getCourseID(){
return CourseID;
}
}
//成绩类
class Grade {
String stuID;
String CourseID;
int score;
Grade(){
}
Grade(String stuID,String CourseID,int score){
this.stuID=stuID;
this.CourseID=CourseID;
this.score=score;
}
void setstuID(String stuID){
this.stuID=stuID;
}
String getstuID(){
return stuID;
}
void setCourseID(String CourseID){
this.CourseID=CourseID;
}
String getCourseID(){
return CourseID;
}
void getscore(int score){
this.score=score;
}
int setscore(){
return score;
}
}
public class GradeManagement {
public static void main (String[] args) {
//实例化几个学生对象并在泛型集合对象中保存学生的信息
ArrayList<Student> students=new ArrayList<Student>();
Student x1=new Student("S001","小明");
Student x2=new Student("S002","小红");
Student x3=new Student("S003","小杰");
students.add(x1);
students.add(x2);
students.add(x3);
//实例化几个课程对象并在泛型集合对象中保存课程的信息
ArrayList<Course> courses=new ArrayList<Course>();
Course xo=new Course("C001","嵌入式编程原理");
Course xp=new Course("C002","计算机专业英语");
Course x=new Course("C003","微机接口与技术");
courses.add(xo);
courses.add(xp);
courses.add(x);
//实例化几个成绩对象并在泛型集合对象中保存成绩的信息
ArrayList<Grade> grades=new ArrayList<Grade>();
Grade xm=new Grade("S001","C001",80);
Grade xh=new Grade("S001","C002",70);
Grade xj=new Grade("S001","C003",90);
Grade xa=new Grade("S002","C001",69);
Grade xs=new Grade("S002","C002",85);
Grade xd=new Grade("S002","C003",92);
Grade xf=new Grade("S003","C001",88);
Grade xg=new Grade("S003","C002",80);
Grade xl=new Grade("S003","C003",87);
grades.add(xm);
grades.add(xh);
grades.add(xj);
grades.add(xa);
grades.add(xs);
grades.add(xd);
grades.add(xf);
grades.add(xg);
grades.add(xl);
//根据成绩泛型集合中的学号和课程编号查询学生集合和课程集合得到学生姓名和课程名称.各科的成绩
System.out.println (" 学号 "+" 姓名 "+ " 课程编号 "+" 课程名称 "+" 成绩 " );
for(Grade g:grades){
for(Student s:students){
if(g.stuID.equals(s.stuID)){
//若找到了,则输出学号和姓名
System.out.print (g.stuID+"\t"+s.name);
for(Course c:courses){
if(c.CourseID.equals(g.CourseID)){
System.out.println (c.CourseID+"\t"+c.Coursename+g.score);
}
}
}
}
}
//统计每课参加考试的人数和总分
int[] count=new int[courses.size()]; //保存各科参考人数
int[] sums=new int[courses.size()]; //保存各科成绩总分
//统计学生人数和总分
for(int i=0;i<courses.size();i++){
for(int j=0;j<grades.size();j++){
if(courses.get(i).CourseID.equals(grades.get(j).CourseID)){
count[i]++; //参考人数+1
//累计求和
sums[i]=sums[i]+grades.get(j).score;
}
}
} //计算并保存每门课程的平均分
TreeMap<String,Integer> total =new TreeMap<String,Integer>();
//计算平均分
for(int i=0;i<courses.size();i++){
if(count[i]>0){
//计算平均分
sums[i]=sums[i]/count[i];
//保存到集合中
total.put(courses.get(i).CourseID,sums[i]);
}
} //打印各科平均分
System.out.println (" 课程编号 "+" 课程名称 "+" 平均分 ");
System.out.println (total);
}
}
编译通过
运行时提示:
Exception in thread "main" java.lang.NullPointerException
at GradeManagement.main(GradeManagement.java:152)请各位师傅再帮帮忙......谢谢.........
class Course { String CourseID; String Coursename; Course() {
} Course(String courseID, String courname) {
this.CourseID = CourseID;
this.Coursename = Coursename;
} void setName(String Courname) {
this.Coursename = Coursename;
} String getName() {
return Coursename;
} void setCourseID(String CourseID) {
this.CourseID = CourseID;
} String getCourseID() {
return CourseID;
}}
==》构造方法里面的属性名写错了,怎么都是大写,相当于设置为null Course(String courseID, String courname) {
this.CourseID = CourseID;
this.Coursename = Coursename;
}
import java.util.TreeMap;public class GradeManagement { static ArrayList<Student> students = new ArrayList<Student>();
static ArrayList<Course> courses = new ArrayList<Course>();
static ArrayList<Grade> grades = new ArrayList<Grade>(); // 初始化student
public static void studentInit() {
Student x1 = new Student("S001", "小明");
Student x2 = new Student("S002", "小红");
Student x3 = new Student("S003", "小杰");
students.add(x1);
students.add(x2);
students.add(x3);
} // 初始化Course
public static void courseInit() {
Course xo = new Course("C001", "嵌入式编程原理");
Course xp = new Course("C002", "计算机专业英语");
Course x = new Course("C003", "微机接口与技术");
System.out.println(xo.getCourseID()) ;
courses.add(xo);
courses.add(xp);
courses.add(x);
} // 初始化成绩
public static void gradeInit() {
Grade xm = new Grade("S001", "C001", 80);
Grade xh = new Grade("S001", "C002", 70);
Grade xj = new Grade("S001", "C003", 90);
Grade xa = new Grade("S002", "C001", 69);
Grade xs = new Grade("S002", "C002", 85);
Grade xd = new Grade("S002", "C003", 92);
Grade xf = new Grade("S003", "C001", 88);
Grade xg = new Grade("S003", "C002", 80);
Grade xl = new Grade("S003", "C003", 87);
grades.add(xm);
grades.add(xh);
grades.add(xj);
grades.add(xa);
grades.add(xs);
grades.add(xd);
grades.add(xf);
grades.add(xg);
grades.add(xl); } public static void print() { // 根据成绩泛型集合中的学号和课程编号查询学生集合和课程集合得到学生姓名和课程名称.各科的成绩
System.out.println(" 学号 " + " 姓名 " + " 课程编号 " + " 课程名称 " + " 成绩 ");
for (Grade g : grades) {
for (Student s : students) {
//System.out.println(g.stuID) ;
if (g.stuID.equals(s.stuID)) {
// 若找到了,则输出学号和姓名
System.out.print(g.stuID + "\t" + s.name);
for (Course c : courses) {
if (c.CourseID.equals(g.CourseID)) {
System.out.println(c.CourseID + "\t" + c.Coursename
+ g.score);
}
}
}
}
} // 统计每课参加考试的人数和总分
int[] count = new int[courses.size()]; // 保存各科参考人数
int[] sums = new int[courses.size()]; // 保存各科成绩总分 // 统计学生人数和总分
for (int i = 0; i < courses.size(); i++) {
for (int j = 0; j < grades.size(); j++) {
System.out.println(courses.size()) ;
System.out.println(courses.get(i).CourseID) ;
if (courses.get(i).CourseID.equals(grades.get(j).CourseID)) {
count[i]++; // 参考人数+1
// 累计求和
sums[i] = sums[i] + grades.get(j).score;
}
}
} // 计算并保存每门课程的平均分
TreeMap<String, Integer> total = new TreeMap<String, Integer>();
// 计算平均分
for (int i = 0; i < courses.size(); i++) {
if (count[i] > 0) {
// 计算平均分
sums[i] = sums[i] / count[i];
// 保存到集合中
total.put(courses.get(i).CourseID, sums[i]);
}
} // 打印各科平均分
System.out.println(" 课程编号 " + " 课程名称 " + " 平均分 ");
System.out.println(total);
} public static void main(String[] args) {
studentInit();
courseInit();
gradeInit();
print();
}
}把代码再重构一下吧要有好的编码风格
import java.util.TreeMap;public class GradeManagement { static ArrayList<Student> students = new ArrayList<Student>();
static ArrayList<Course> courses = new ArrayList<Course>();
static ArrayList<Grade> grades = new ArrayList<Grade>(); // 初始化student
public static void studentInit() {
Student x1 = new Student("S001", "小明");
Student x2 = new Student("S002", "小红");
Student x3 = new Student("S003", "小杰");
students.add(x1);
students.add(x2);
students.add(x3);
} // 初始化Course
public static void courseInit() {
Course xo = new Course("C001", "嵌入式编程原理");
Course xp = new Course("C002", "计算机专业英语");
Course x = new Course("C003", "微机接口与技术");
System.out.println(xo.getCourseID()) ;
courses.add(xo);
courses.add(xp);
courses.add(x);
} // 初始化成绩
public static void gradeInit() {
Grade xm = new Grade("S001", "C001", 80);
Grade xh = new Grade("S001", "C002", 70);
Grade xj = new Grade("S001", "C003", 90);
Grade xa = new Grade("S002", "C001", 69);
Grade xs = new Grade("S002", "C002", 85);
Grade xd = new Grade("S002", "C003", 92);
Grade xf = new Grade("S003", "C001", 88);
Grade xg = new Grade("S003", "C002", 80);
Grade xl = new Grade("S003", "C003", 87);
grades.add(xm);
grades.add(xh);
grades.add(xj);
grades.add(xa);
grades.add(xs);
grades.add(xd);
grades.add(xf);
grades.add(xg);
grades.add(xl); } public static void print() { // 根据成绩泛型集合中的学号和课程编号查询学生集合和课程集合得到学生姓名和课程名称.各科的成绩
System.out.println(" 学号 " + " 姓名 " + " 课程编号 " + " 课程名称 " + " 成绩 ");
for (Grade g : grades) {
for (Student s : students) {
//System.out.println(g.stuID) ;
if (g.stuID.equals(s.stuID)) {
// 若找到了,则输出学号和姓名
System.out.print(g.stuID + "\t" + s.name);
for (Course c : courses) {
if (c.CourseID.equals(g.CourseID)) {
System.out.println(c.CourseID + "\t" + c.Coursename
+ g.score);
}
}
}
}
} // 统计每课参加考试的人数和总分
int[] count = new int[courses.size()]; // 保存各科参考人数
int[] sums = new int[courses.size()]; // 保存各科成绩总分 // 统计学生人数和总分
for (int i = 0; i < courses.size(); i++) {
for (int j = 0; j < grades.size(); j++) {
System.out.println(courses.size()) ;
System.out.println(courses.get(i).CourseID) ;
if (courses.get(i).CourseID.equals(grades.get(j).CourseID)) {
count[i]++; // 参考人数+1
// 累计求和
sums[i] = sums[i] + grades.get(j).score;
}
}
} // 计算并保存每门课程的平均分
TreeMap<String, Integer> total = new TreeMap<String, Integer>();
// 计算平均分
for (int i = 0; i < courses.size(); i++) {
if (count[i] > 0) {
// 计算平均分
sums[i] = sums[i] / count[i];
// 保存到集合中
total.put(courses.get(i).CourseID, sums[i]);
}
} // 打印各科平均分
System.out.println(" 课程编号 " + " 课程名称 " + " 平均分 ");
System.out.println(total);
} public static void main(String[] args) {
studentInit();
courseInit();
gradeInit();
print();
}
}把代码再重构一下吧要有好的编码风格
是私有的,还是公有的呢?
很怀疑是访问权限问题。