java - 在java中将文件导入到二维数组

标签 java file import multidimensional-array

我正在尝试从文件导入项目并将其放入 3 个不同的数组中,但出现一些错误。这是我到目前为止的代码:

package project1;

import java.io.File;
import java.io.IOException;
import java.util.Scanner;


public class Project1 {

 /**
 * @param args the command line arguments
 * @throws java.io.IOException
 */
public static void main(String[] args) throws IOException {
    fillArray();

}

public static void fillArray() throws IOException {
    Scanner teamList = new Scanner(new File("baseball_teams.txt"));
    String[] teamName = new String[35];
    int[] teamRank = new int[35];
    double[] teamWinPercentage = new double[35];
    int i = 0;
    while (teamList.hasNext()) {
        teamRank[i] = teamList.nextInt();
        teamName[i] = teamList.next();
        teamWinPercentage[i] = teamList.nextDouble();
        i++;
    }
}

}

当我尝试运行该程序时收到此错误:

run:
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:909)
at java.util.Scanner.next(Scanner.java:1530)
at java.util.Scanner.nextDouble(Scanner.java:2456)
at project1.Project1.fillArray(Project1.java:36)
at project1.Project1.main(Project1.java:23)
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)

这是文件的内容:

1   

Boston

0.605

2 

St.Louis

0.596   

3

Oakland

0.587 

4 

Atlanta

0.584 

5 

Pittsburgh

0.577 

6 

Detroit

0.567 

7 

Cleveland

0.564 

8 

Dodgers

0.564 

9 

Tampa Bay

0.559 

10 

Texas

0.558 

11 

Cincinnati

0.552 

12

Washington

0.531 

13 

Kansas City

0.531 

14 

Baltimore

0.525 

15 

Yankees

0.525 

16 

Arizona

0.500 

17 

Angels

0.481 

18 

San Diego

0.469 

19  

Giants

0.469  

20   

Mets    

0.457 

21   

Colorado 

0.457

22   

Milwaukee

0.457 

23   

Toronto 

0.457 

24   

Philadelphia 

0.451 

25   

Seattle 

0.438    

26   

Minnesota

0.407  

27   

Cubs    

0.407 

28   

Sox     

0.389  29    

Miami   

0.383 

30   

Houston 

0.315

如果有任何提示,我将不胜感激!

谢谢!

最佳答案

看来您正在对 .next*() (.next() 和 .nextInt())进行两次调用,即使在循环条件中您只检查下一个。

如果我对你的文件的假设是正确的

1 teamName1 100.0
2 teamName2 43.3
3 teamName3 43.6
4 teamName4 34.4
5 teamName5 23.2
.
.
.

如果是这样,那么也许尝试一次读取一行

int i = 0;
String[] ln = null;
while(teamList.hasNext()){
    ln = String.split(teamList.nextLine()); // default is split on ' ' character
    teamRank[i] = Integer.valueOf(ln[0]);
    teamName[i] = ln[1];
    teamWinPercentage[i] = Double.valueOf(ln[2]);
    ++i;
}

关于java - 在java中将文件导入到二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21558092/

相关文章:

Python:从导入的模块中获取导入模块的详细信息

java - Saxon无法编译xPath

c++ - 如何知道写入文件何时完成?

java - 从 Excel JDBC 将数据插入 MySQL - POI 示例程序

javascript - 如何在外部文件中创建选择菜单并将其嵌入到 html 中以显示菜单

C 无法使用 fgets 读取文件

python - 使用 pandas 从 wunderground 中抓取天气数据

php - 如何使用 php 检查 mysql 是否有重复项

javascript - 如何在 Apache Tomcat 中运行 React 应用程序?

java - 我应该在 netbeans 中使用什么类型的表单?