我目前正在完成一项任务,并多次浏览工作簿和java网站,但我似乎无法看到我的错误。
我正在尝试将文件导入2D数组。我使用Scanner w / BufferedReader和FileReader来选择命令行参数(titanic.txt)。我在// TEST if语句中查看是否" fileInput"仍然是空的。在运行时没有问题。
以下是我的代码的一部分:
//Declare Variables
String[][] titanicArray = new String[1308][6];
int[] classArray = new int[1308];
int[] survivedIntArray = new int[1308];
double[] ageArray = new double[1308];
double[] ticketPriceArray = new double[1308];
String inputFile = null;
String answerStr = null;
int answer1 = 0;
Scanner fileInput = null;
Scanner userInput = new Scanner(System.in);
inputFile = args[0];
//try statement to scan command-line argument and fill the array with the data
try {
fileInput = new Scanner(new BufferedReader(new FileReader(inputFile)));
//TEST
if (fileInput != null){
System.out.println("Error Taking in file");
}
for (int row = 0; row < titanicArray.length; row++) {
for (int col = 0; col < titanicArray[row].length; col++){
while (fileInput.hasNext()){
titanicArray[row][col] = fileInput.next();
}
}
}
} finally {
if (fileInput != null){
System.out.println("Error Taking in file");
fileInput.close();
}//End of If for closing Scanner
} //End of finally to close Scanner
注意:titanic.txt包含如下数据(Class,Suvived,Name,Sex,Age,TicketPrice)w / tab,没有空白行:
<1> 1艾伦,小姐。伊丽莎白沃尔顿女29 211.3375 <1> 1艾莉森,师父。哈德森特雷弗男性0.9167 151.5500 <0> 1 0 Allison,Miss.Helen Loraine female 2 151.5500 1 0 Allison,Hudson Joshua Creighton先生男性30 151.5500 1 0 Allison,Hudson J C夫人(Bessie Waldo Daniels)女25 151.5500 <1> 1安德森,哈里先生男48 48.5500 <1> 1安德鲁斯,小姐.Kornelia Theodosia女63 77.9583答案 0 :(得分:3)
if (fileInput != null){
System.out.println("Error Taking in file");
}
您的代码中似乎有一个明显的错误:
为什么要fileInput != null
成为问题?
无论如何,首先清理和简化代码总是一个好主意,然后寻求帮助。一些想法:
答案 1 :(得分:0)
您拍摄的数组(列)的大小太小.next()
仅为您提供前六个字符串,而输入中的名称似乎太长。