我不知道我的String索引超出范围:0错误来自

时间:2016-04-19 19:42:01

标签: java arrays

我试图从txt文件中获取数据并从数据中创建可比较的对象并将它们添加到数组中。在创建该阵列之后,如果两个选项满足要求,我想制作一个2d数组,在插槽中存储1。我继续得到一个超出范围的String索引:0错误但我不知道它来自哪里。

 import java.util.*;
import java.io.*;

public class CourseScheduler
{

public int numberOfCourses;
public int[][] adjacent;
public Course[] courses;

public CourseScheduler(String filename)
{
  File file = new File(filename);

  try{
     Scanner scan = new Scanner(file);
     numberOfCourses = scan.nextInt();
     courses = new Course[numberOfCourses];
     adjacent = new int[numberOfCourses][numberOfCourses];

     scan.useDelimiter(",|\\n");
     for(int i = 0; i < numberOfCourses;i ++){
        if(scan.hasNext()){
           String dept = scan.next();
           String num = scan.next();
           String building = scan.next();
           String room = scan.next();
           String instruct = scan.next();

           courses[i] = new Course(dept, num, building, room, instruct);
        }
     }
  }



  catch(FileNotFoundException ex){
     System.out.println("File was not found");
  }


  for(int x = 0;x<numberOfCourses;x++){
     for(int y = 0;y<numberOfCourses;y++){
        adjacent[x][y] = (courses[x].compare(courses[y]));
     }
  }

}

这是主类的代码

public class Course{

String department;
String courseNum;
String buildingCode;
String roomCode;
String instructorName;

public Course(String dept, String number, String building, String room,    String instructor){
  department = dept;
  courseNum = number;
  buildingCode = building;
  roomCode = room;
  instructorName = instructor;
   }

   public String getDept(){
  return department;
  }

 public String getCourse(){
  return courseNum;
 }

 public String getBuilding(){
  return buildingCode;
 }

 public String getRoom(){
  return roomCode;
 }

 public String getInstructor(){
  return instructorName;
 }

 public String toString(){
  return department + ";" + courseNum + ";" + buildingCode + ";" + roomCode    + ";" + instructorName;
  }
   public int compare(Course comp){
  int ans = 1;
  String compNum = comp.getCourse();

  if(instructorName == comp.getInstructor())
     ans = 0;

  if(buildingCode == comp.getBuilding()){
     if(roomCode == comp.getRoom())
        ans = 0;
  }
  if(department == comp.getDept()){
     if(courseNum.charAt(0) == compNum.charAt(0))
        ans = 0;
  }

  return ans;
}
}

这是课程类的代码

2 个答案:

答案 0 :(得分:1)

受过教育的猜测:很可能你的错误来自这条线:

 if(courseNum.charAt(0) == compNum.charAt(0))
    ans = 0;

courseNum或compNum都是空的。

答案 1 :(得分:0)

我没有尝试编译并运行它,但似乎异常来自这一行

if(courseNum.charAt(0) == compNum.charAt(0))

如果字符串为空,则charAt(0)将完全抛出给定的异常。

提示:如果您不知道如何使用调试器,请使用旧式的System.out.println()。将println()放在代码中,以了解它是如何工作的。