- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的代码中有一个奇怪的错误:
Exception in thread "main" java.lang.ClassCastException: java.util.AbstractList$Itr
cannot be cast to ex2.Tuple at ex2.Main.main(Main.java:142)
因为在 GradeBook
类中我有这个声明
private ArrayList courseLists;
我不明白这个强制转换异常
这是我的完整代码:
问题出在 Main.java 第 142 行:
Tuple tupleObject = (Tuple)iterator;
GradeBook.java:
package ex2;
import java.util.ArrayList;
public class GradeBook {
private ArrayList<Tuple> courseLists;
//final mark for the student
private float finalStudentmark;
public GradeBook(){
courseLists = new ArrayList<Tuple>();
finalStudentmark = 0;
}
public ArrayList<Tuple> getCourseLists() {
return courseLists;
}
public void setCourseLists(Tuple t) {
this.courseLists.add(t);
}
public float getFinalStudentmark() {
return finalStudentmark;
}
public void setFinalStudentmark(float finalStudentmark) {
this.finalStudentmark = finalStudentmark;
}
}
Main.java:
package ex2;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Random;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import static java.util.concurrent.TimeUnit.*;
public class Main {
public static void main(String[] args) {
//1- create 10 courses
Course[] courseLists = new Course[10];
for(int i=0; i<10; i++){
//create
Course course = new Course("course"+i, "courseId"+i, "", 60.0f, 0, 0.0f);
courseLists[i]=course;
}
//2- create 7 professors
Professor[] professorLists = new Professor[7];
Random rand= new Random();
int min=1;
int max = 6;
for(int i=0; i<7; i++){
//create
Professor professor = new Professor("ProfessorFirstName"+i, "ProfessorLastName"+i, 35, "MALE", "adress"+i, "professorId"+i);
courseLists[i].setAssignedProfessor("profId"+i);
professor.setCourseList(courseLists[i]);
professorLists[i] = professor;
}
rand= new Random();
int randomNum1 = rand.nextInt((max - min) + 1) + min;
int randomNum2 = rand.nextInt((max - min) + 1) + min;
while ( randomNum2 == randomNum1 ) {
randomNum2 = rand.nextInt((max - min) + 1) + min;
}
courseLists[8].setAssignedProfessor("profId"+randomNum1);
professorLists[randomNum1].setCourseList(courseLists[8]);
courseLists[9].setAssignedProfessor("profId"+randomNum2);
professorLists[randomNum2].setCourseList(courseLists[9]);
courseLists[7].setAssignedProfessor("profId"+1);
professorLists[1].setCourseList(courseLists[7]);
//3- create 30 students
Student[] studentsLists = new Student[30];
//--------------------
boolean genderValue;
//generate number of courses per student
//randomNbrCourses: number of courses taken by the current student
for(int i=0; i<30; i++){
int minNbrCourses = 1;
int maxNbrCourses = 6;
int randomNbrCourses;
rand= new Random();
randomNbrCourses = rand.nextInt((maxNbrCourses - minNbrCourses) + 1) + minNbrCourses;
//generate random age
int minStudentAge=18;
int maxStudentAge = 48;
int randomAge = -1;
rand= new Random();
randomAge = rand.nextInt((maxStudentAge - minStudentAge) + 1) + minStudentAge;
//gender
genderValue = Math.random() < 0.5;
String gender;
if (genderValue == false)
gender = "FEMALE";
else
gender = "MALE";
HashSet<Integer> tempSet;
tempSet = new HashSet<Integer>();
GradeBook gradeBook = new GradeBook();
for ( int nbrCourse=0; nbrCourse<randomNbrCourses; nbrCourse++) {
Tuple tupleValue = new Tuple();
//generate one number , this number correspand to a course id...
int randomNumber = rand.nextInt(10);
tempSet.add(randomNumber);
while (tempSet.contains(randomNumber))
randomNumber = rand.nextInt(10);
tempSet.add(randomNumber);
courseLists[randomNumber].setNbrEnrolledStudent(1);
Random newRand= new Random();
//generate four random marks for the course....
float randomMark1 = newRand.nextFloat()*(100.0f-0.0f) + 0.0f;
tupleValue.setMarkExam1(randomMark1);
float randomMark2 = newRand.nextFloat()*(100.0f-0.0f) + 0.0f;
tupleValue.setMarkExam2(randomMark2);
float randomMark3 = newRand.nextFloat()*(100.0f-0.0f) + 0.0f;
tupleValue.setMarkExam3(randomMark3);
float randomMark4 = newRand.nextFloat()*(100.0f-0.0f) + 0.0f;
tupleValue.setMarkExam4(randomMark4);
tupleValue.setFinalMark((randomMark1+randomMark2+randomMark3+randomMark4)/4);
tupleValue.setCourseName("course"+randomNumber);
tupleValue.setCourseId("courseId"+randomNumber);
gradeBook.setCourseLists(tupleValue);
}
Student student = new Student("firstName_student"+i, "lastName_student"+i, randomAge, gender, "adress"+i, "idStudent"+i, null ,gradeBook);
//for quick access, add courses ids
Iterator<Tuple> iterator = (Iterator<Tuple>) gradeBook.getCourseLists().iterator();
while (iterator.hasNext()) {
Tuple tupleObject = (Tuple)iterator;
student.getCourseLists().add(tupleObject.getCourseId());
}
studentsLists[i]=student;
studentsLists[i].setNbrCourses(randomNbrCourses);
}
//we have to verify that there is no course with less than 3 student enrolled
//create the admin thread
//1- create a schedule for the exam
HashMap<String, float[]> examScheduleMap;
examScheduleMap = new HashMap <String, float[]>();
//ExamSchedule eSchedule = new ExamSchedule();
Thread examSchedTh = new Thread( new ExamSchedule(examScheduleMap, courseLists));
examSchedTh.start();
try {
examSchedTh.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
//using thread pool and scheduler for students
// 1- thread pool
ScheduledThreadPoolExecutor eventPool = new ScheduledThreadPoolExecutor(30);
for (int j=0;j<30;j++)
eventPool.schedule(new StudentThread(courseLists, studentsLists, j), 0, SECONDS);
//for (int i=0; i<30;i++)
// thPoolStudent[i] = new Thread( new StudentThread(courseLists));
//th1.start();
//wait for the exam period
//print the list of courses
getWholeCouces(courseLists, studentsLists);
//print the professors and there assigned courses
getProfessorsAndAssignedCouces(professorLists);
//print the list of all students and the courses enrolled in
getStudentsWithEnrolledCourses(studentsLists);
}
/*
static float getMinMarkCourse(){
}
static float getMaxMarkCourse(){
}
static float getGroupMarkCourse(){
}*/
//method to print the list of all students and the courses they are enrolled in
static void getStudentsWithEnrolledCourses(Student[] student){
System.out.println(" ");
System.out.println("----------------------------------------------------------");
System.out.println("list of all students and the courses they are enrolled in:");
System.out.println("----------------------------------------------------------");
for (int i=0; i<30;i++){
System.out.print(student[i].getLastName());
System.out.print(" "+student[i].getIdentificationNumber());
GradeBook gb = student[i].getGradeBook();
ArrayList<Tuple> tuple = gb.getCourseLists();
for (int L=0; L< tuple.size(); L++)
{
System.out.println(" ");
System.out.print(" "+tuple.get(L).getCourseId());
System.out.print(" "+tuple.get(L).getFinalMark());
}
System.out.println(" ");
System.out.println(" ");
}
}
//method to get the professors and there assigned courses
static void getProfessorsAndAssignedCouces(Professor[] professor){
System.out.println(" ");
System.out.println("---------------------------------------");
System.out.println("professors and there assigned courses:");
System.out.println("---------------------------------------");
for(int i=0; i<7; i++){
System.out.println(" ");
System.out.print(professor[i].getFirstName());
System.out.print(" "+professor[i].getIdentificationNumber());
System.out.println(" ");
System.out.println(" ");
List<Course> courseList = professor[i].getCourseList();
for (int k=0; k < courseList.size(); k++){
System.out.print(" "+courseList.get(k).getCourseId());
System.out.print(" "+courseList.get(k).getNbrEnrolledStudent());
System.out.print(" "+courseList.get(k).getAverageCourseMark());
System.out.println(" ");
}
System.out.println(" ");
}
}
//method to get the list of all courses
static void getWholeCouces(Course[] courseList,Student[] studentsList){
System.out.println("----------------");
System.out.println("list of courses:");
System.out.println("----------------");
// maxMark = max mark of the course
// minMark = minimum mark of the course
float maxMark = Float.MIN_VALUE;
float minMark = Float.MAX_VALUE;
float allMarks = 0.0f;
float nbOfEnrolledStudent=0.0f;
for(int i=0; i<10; i++){
//create
String courseName = courseList[i].getCourseName();
//look for enrolled student
for(int nbStudent=0; nbStudent<30; nbStudent++){
ArrayList<Tuple> temp = studentsList[nbStudent].getGradeBook().getCourseLists();
for (int j=0;j< temp.size();j++){
if (temp.get(j).getCourseName().equals(courseName)){
if (temp.get(j).getFinalMark() > maxMark )
maxMark = temp.get(j).getFinalMark();
if (temp.get(j).getFinalMark() < minMark )
minMark = temp.get(j).getFinalMark();
allMarks += temp.get(j).getFinalMark();
nbOfEnrolledStudent+=1;
}
}
}
courseList[i].setAverageCourseMark((allMarks)/nbOfEnrolledStudent);
System.out.print(courseName);
System.out.print(" "+courseList[i].getCourseId());
System.out.print(" "+courseList[i].getAssignedProfessor());
System.out.print(" "+courseList[i].getNbrEnrolledStudent());
System.out.print(" "+minMark);
System.out.print(" "+maxMark);
System.out.print(" "+(allMarks)/nbOfEnrolledStudent);
System.out.println(" ");
}
}
}
Tuple.java:
package ex2;
public class Tuple{
private String courseName;
private String courseId;
private float markExam1;
private float markExam2;
private float markExam3;
private float markExam4;
private float finalMark;
//default constructor
public Tuple(){
super();
courseName = "";
courseId = "";
markExam1 = 0;
markExam2 = 0;
markExam3 = 0;
markExam4 = 0;
finalMark = 0;
}
public String getCourseId() {
return courseId;
}
public void setCourseId(String courseId) {
this.courseId = courseId;
}
public Tuple(String courseName, String courseId, float markExam1, float markExam2, float markExam3, float markExam4, float finalMark) {
this.courseName = courseName;
this.courseId = courseId;
this.markExam1 = markExam1;
this.markExam2 = markExam2;
this.markExam3 = markExam3;
this.markExam4 = markExam4;
this.finalMark = finalMark;
}
public String getCourseName() {
return courseName;
}
public void setCourseName(String courseName) {
this.courseName = courseName;
}
public float getMarkExam1() {
return markExam1;
}
public void setMarkExam1(float markExam1) {
this.markExam1 = markExam1;
}
public float getMarkExam2() {
return markExam2;
}
public void setMarkExam2(float markExam2) {
this.markExam2 = markExam2;
}
public float getMarkExam3() {
return markExam3;
}
public void setMarkExam3(float markExam3) {
this.markExam3 = markExam3;
}
public float getMarkExam4() {
return markExam4;
}
public void setMarkExam4(float markExam4) {
this.markExam4 = markExam4;
}
public float getFinalMark() {
return finalMark;
}
public void setFinalMark(float finalMark) {
this.finalMark = finalMark;
}
}
最佳答案
替换
Tuple tupleObject = (Tuple)iterator;
与
Tuple tupleObject = iterator.next();
关于java - 错误 : java. util.AbstractList$Itr 无法转换为 ex2.Tuple,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35776396/
我通过 spring ioc 编写了一些 Rest 应用程序。但我无法解决这个问题。这是我的异常(exception): org.springframework.beans.factory.BeanC
我对 TestNG、Spring 框架等完全陌生,我正在尝试使用注释 @Value通过 @Configuration 访问配置文件注释。 我在这里想要实现的目标是让控制台从配置文件中写出“hi”,通过
为此工作了几个小时。我完全被难住了。 这是 CS113 的实验室。 如果用户在程序(二进制计算器)结束时选择继续,我们需要使用 goto 语句来到达程序的顶部。 但是,我们还需要释放所有分配的内存。
我正在尝试使用 ffmpeg 库构建一个小的 C 程序。但是我什至无法使用 avformat_open_input() 打开音频文件设置检查错误代码的函数后,我得到以下输出: Error code:
使用 Spring Initializer 创建一个简单的 Spring boot。我只在可用选项下选择 DevTools。 创建项目后,无需对其进行任何更改,即可正常运行程序。 现在,当我尝试在项目
所以我只是在 Mac OS X 中通过 brew 安装了 qt。但是它无法链接它。当我尝试运行 brew link qt 或 brew link --overwrite qt 我得到以下信息: ton
我在提交和 pull 时遇到了问题:在提交的 IDE 中,我看到: warning not all local changes may be shown due to an error: unable
我跑 man gcc | grep "-L" 我明白了 Usage: grep [OPTION]... PATTERN [FILE]... Try `grep --help' for more inf
我有一段代码,旨在接收任何 URL 并将其从网络上撕下来。到目前为止,它运行良好,直到有人给了它这个 URL: http://www.aspensurgical.com/static/images/a
在过去的 5 个小时里,我一直在尝试在我的服务器上设置 WireGuard,但在完成所有设置后,我无法 ping IP 或解析域。 下面是服务器配置 [Interface] Address = 10.
我正在尝试在 GitLab 中 fork 我的一个私有(private)项目,但是当我按下 fork 按钮时,我会收到以下信息: No available namespaces to fork the
我这里遇到了一些问题。我是 node.js 和 Rest API 的新手,但我正在尝试自学。我制作了 REST API,使用 MongoDB 与我的数据库进行通信,我使用 Postman 来测试我的路
下面的代码在控制台中给出以下消息: Uncaught DOMException: Failed to execute 'appendChild' on 'Node': The new child el
我正在尝试调用一个新端点来显示数据,我意识到在上一组有效的数据中,它在数据周围用一对额外的“[]”括号进行控制台,我认为这就是问题是,而新端点不会以我使用数据的方式产生它! 这是 NgFor 失败的原
我正在尝试将我的 Symfony2 应用程序部署到我的 Azure Web 应用程序,但遇到了一些麻烦。 推送到远程时,我在终端中收到以下消息 remote: Updating branch 'mas
Minikube已启动并正在运行,没有任何错误,但是我无法 curl IP。我在这里遵循:https://docs.traefik.io/user-guide/kubernetes/,似乎没有提到关闭
每当我尝试docker组成任何项目时,都会出现以下错误。 我尝试过有和没有sudo 我在这台机器上只有这个问题。我可以在Mac和Amazon WorkSpace上运行相同的容器。 (myslabs)
我正在尝试 pip install stanza 并收到此消息: ERROR: No matching distribution found for torch>=1.3.0 (from stanza
DNS 解析看起来不错,但我无法 ping 我的服务。可能是什么原因? 来自集群中的另一个 Pod: $ ping backend PING backend.default.svc.cluster.l
我正在使用Hibernate 4 + Spring MVC 4当我开始 Apache Tomcat Server 8我收到此错误: Error creating bean with name 'wel
我是一名优秀的程序员,十分优秀!