我需要它跳过文本文件的第一行,然后跳过表格的前两列。
}public static float [][] read_data(String strFileName){
float[][] fileread = new float[ROWS][COLUMNS];
File filedata = new File(strFileName);
try {
Scanner fileReader = new Scanner(filedata);
System.out.println(fileReader.nextLine());
for(int rowCounter=0;rowCounter<23;) {
System.out.println(fileReader.next());
System.out.println(fileReader.next());
for(int counter = 0;counter<6;) {
fileread[rowCounter][counter]= fileReader.nextFloat();
counter++;
}
rowCounter++;}
fileReader.close();
}catch(FileNotFoundException e) {
System.out.println("File Not Found!");
}return fileread;
}
问题是它在扫描器的nextFloat()方法上 抛出了一个输入不匹配的异常 但它应该读取的值是一个浮点。我不知道问题出在哪里,所以想找一个比我更了解的人。这里是我应该读取的文本文件。
Federal_Fiscal_Year
2014 Q2 255.3 350.7 606.0 37.8 62.2 8.3 373.6
2014 Q3 254.1 355.1 609.2 38.6 61.9 8.2 378.8
2014 Q4 258.8 370.8 629.7 41.2 65.1 8.2 385.8
2015 Q1 258.0 373.0 630.9 40.9 65.1 8.2 394.9
2015 Q2 262.9 388.4 651.3 43.4 68.7 8.3 402.8
2015 Q3 260.7 390.8 651.6 44.1 68.0 8.2 410.3
2015 Q4 264.8 404.9 669.7 46.8 71.1 8.1 416.7
2016 Q1 264.1 406.6 670.7 46.6 71.1 8.1 423.6
2016 Q2 269.0 421.8 690.8 49.4 75.2 8.2 431.2
2016 Q3 266.7 423.5 690.3 50.2 74.5 8.0 439.2
2016 Q4 270.1 436.1 706.2 53.0 77.8 7.9 447.3
2017 Q1 268.8 436.5 705.3 52.8 77.5 7.9 456.2
2017 Q2 272.5 449.6 722.2 55.7 81.5 7.9 464.5
2017 Q3 269.9 450.3 720.2 56.6 80.5 7.8 472.3
2017 Q4 273.1 462.4 735.5 59.7 83.9 7.6 480.3
2018 Q1 272.2 463.3 735.5 59.6 83.7 7.6 489.0
2018 Q2 276.4 476.6 753.0 62.8 87.7 7.6 495.9
2018 Q3 274.2 477.8 752.1 63.9 86.7 7.4 501.9
2018 Q4 277.5 489.6 767.1 67.0 89.9 7.1 508.0
2019 Q1 276.8 490.9 767.7 71.3 89.8 6.9 515.6
2019 Q2 280.0 503.5 783.5 70.7 93.9 6.6 521.8
2019 Q3 277.4 504.2 781.6 71.9 92.9 6.3 528.4
2019 Q4 280.7 516.0 796.7 75.2 96.1 6.1 536.1
2020 Q1 279.6 516.3 795.8 75.3 95.6 5.9 542.4
解决方案:
当你在循环中使用readFloat时,你只能读取6列,这基本上意味着当你认为你在下一行时–你不是,你在当前行的最后一个元素,因此当你再跳过两个条目时,你最终试图从第2列的值中解析Float–它是 “Q3″,显然不完全是一个浮点数。但是你的输入文件有7列。我建议你使用你的常量(ROWSCOLUMNS)而不是硬编码的数字,比如说。
for (int rowCounter = 0; rowCounter < ROWS; rowCounter++) {
System.out.println(fileReader.next());
System.out.println(fileReader.next());
for (int counter = 0; counter < COLUMNS; counter++) {
fileread[rowCounter][counter] = fileReader.nextFloat();
}
}
PS,你可以做增量作为for()语句的一部分,如上所述。
本文来自投稿,不代表运维实战侠立场,如若转载,请注明出处:https://www.shizhanxia.com/648.html