我正在尝试创建一个以初始大小开头的数组,可以添加条目。 (我必须使用数组)。要打印数组,我必须遵循以下代码:
public String printDirectory() {
int x = 0;
String print = String.format("%-15s" + "%-15s" + "%4s" + "\n", "Surname" , "Initials" , "Number");
// Sorts the array into alphabetical order
// Arrays.sort(Array);
while ( x < count ){
Scanner sc = new Scanner(Array[x]).useDelimiter("\\t");
secondName[x] = sc.next();
initials[x] = sc.next();
extension[x] = sc.next();
x++;
}
x = 0;
while ( x < count){
print += String.format("%-15s" + "%-15s" + "%4S" + "\n", secondName[x] , initials[x] , extension[x]);
x++;
}
return print + "" + Array.length;
}
请在return语句中忽略额外的Array.length。
无论如何,这工作正常,首先,Array读取一个文件,该文件在每行上形成如NameInitialsnumber。
所以我尝试制作一个newEntry方法,当我想要打印数组时会导致问题。当我添加一个新条目时,如果Array太小,它将使数组变大并添加条目。我制定了方法来确保它有效并且确实有效。此方法的以下代码为:
public void newEntry(String surname, String in, String ext) {
if (count == Array.length) {
String entry = surname + "\t" + in + "\t" + ext;
int x = Array.length + 1;
String[] tempArray = new String[x];
System.arraycopy(Array, 0, tempArray, 0, Array.length);
Array = tempArray;
Array[count] = entry;
Arrays.sort(Array);
} else {
String entry = surname + "\t" + in + "\t" + ext;
Array[count] = entry;
Arrays.sort(Array);
}
count++;
}
问题是当我调用printDirectory方法时,sc.next()有问题。错误消息如下:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 7
at ArrayDirectory.printDirectory(ArrayDirectory.java:106)
at ArrayDirectory.main(ArrayDirectory.java:165)
我真的很擅长编码,我不知道出了什么问题。我知道新条目有问题,但我不知道是什么。非常感谢任何帮助。感谢。
答案 0 :(得分:1)
您的其他数组secondName
,initials
和extension
似乎不够大。
你也需要让它们更大。或者甚至更好,当你仔细考虑它时,你会认识到你根本不需要它们。