我正在尝试从文件中读取信息,以便使用Java创建图形。我有下面的代码,但是,在运行输出后为null。
该文件提供类似于以下信息
3
Kentucky Florida Alabama
...
...
其中3是图中顶点的数量,下一行中的3个位置是那些顶点。我正在努力弄清楚什么导致了空输出。
public class ReadGraph {
static int vertNum = 0;
static String[] output;
public static String[] readVertices(Scanner fileIn) throws FileNotFoundException {
fileIn = new Scanner(new File("input.txt"));
vertNum = fileIn.nextInt();
output = new String[vertNum];
for (int i = 0; i < vertNum - 1; i++) {
output[i] = fileIn.next();
}
Arrays.sort(output);
fileIn.close();
return output;
}
}
输出应该是此时按字母顺序排列的位置列表。任何帮助将不胜感激。
答案 0 :(得分:1)
当fileIn
对象读取第一行时,它找到了数字3
,这个值正在初始化output
数组,在循环中你减去一个{{1}因此,当vertNum - 1
尝试排序时,它没有找到完整的数组,只有2个元素,因此它会引发异常。为了避免这种异常,你不应该在循环中减去一个元素,例如:
Arrays
<强>更新强> 完整的例子:
for (int i = 0; i < vertNum; i++) {
output[i] = fileIn.next();
}
<强>输出:强>
public class ReadGraph {
static int vertNum = 0;
static String[] output;
public static void main(String[] args) throws FileNotFoundException {
Scanner fileIn = null;
for (String s : readVertices(fileIn)) {
System.out.println(s);
}
}
public static String[] readVertices(Scanner fileIn) throws FileNotFoundException {
fileIn = new Scanner(new File("input.txt"));
vertNum = fileIn.nextInt();
output = new String[vertNum];
for (int i = 0; i < vertNum; i++) {
output[i] = fileIn.next();
}
Arrays.sort(output);
fileIn.close();
return output;
}
}