java 中的 nextFloat 问题
Issue with nextFloat in java
我需要它跳过文本文件的第一行,然后是 table 的前两列。
到目前为止我有:
}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 列。我建议您使用常量 (ROWS/COLUMNS) 而不是硬编码数字,例如:
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 并且您可以将 increment 作为 for() 语句的一部分,如上所述。
更改您的浮动读取计数器读取 6 个元素。
for(int counter = 0;counter<7;) {
我需要它跳过文本文件的第一行,然后是 table 的前两列。 到目前为止我有:
}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 列。我建议您使用常量 (ROWS/COLUMNS) 而不是硬编码数字,例如:
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 并且您可以将 increment 作为 for() 语句的一部分,如上所述。
更改您的浮动读取计数器读取 6 个元素。
for(int counter = 0;counter<7;) {