Java - 将逗号分隔的整数从文本文件放入数组中

时间:2015-05-05 23:10:46

标签: java arrays file integer

根据我正在处理的作业提出了一个简单的问题。

我在文本文件中有这样的数字列表:

5, 8, 14
7, 4, 2

我需要将它们插入到数组中

joe[5][8] = 14; 
joe[7][4] = 2; 

无法完成任务,感谢任何能够帮助我的人。

- 编辑 -

这是我现在的代码

File f = new File("solution.txt");
Scanner sc = new Scanner(f);      

while(sc.hasNextLine())
{
    if(sc.hasNextInt())
        x = sc.nextInt();

    if(sc.hasNextInt())
        y = sc.nextInt();

    if(sc.hasNextInt())
        joe[x][y] = sc.nextInt();
}    

4 个答案:

答案 0 :(得分:1)

尝试实例化一个二维数组,然后读取每一行,然后读取每一行中的三个数字。使用前2个数字作为数组索引,使用最后一个数字作为值。

一些示例代码

int[][] numbers = new int[1000][1000];
File fin = new File("filename");
BufferedReader br = new BufferedReader(new FileReader(fin));

String line = null;
while ((line = br.readLine()) != null) {
    String tokens[] = line.split(", ");
    int numberOne = Integer.parseInt(tokens[0]);
    int numberTwo = Integer.parseInt(tokens[1]);
    int numberThree = Integer.parseInt(tokens[2]);
    numbers[numberOne][numberTwo] = numberThree;
}

答案 1 :(得分:1)

使用方法split将整行划分为一个String数组,如下所示。然后获取String数组的每个元素,并使用方法int将其转换为Integer.parseInt( )。您的代码应该类似于:

File f = new File("solution.txt");
Scanner sc = new Scanner(f);      

while(sc.hasNextLine())
{
    String line = sc.nextLine();
    String[] number = line.split(", ");
    int x = Integer.parseInt(number[0]);
    int y = Integer.parseInt(number[1]);
    joe[x][y] = Integer.parseInt(number[2]);
}    

答案 2 :(得分:0)

您必须将,指定为分隔符。

试试这个:sc.useDelimiter("[,]+");

然后你的代码是:

File f = new File("solution.txt");
    Scanner sc = new Scanner(f);  
    sc.useDelimiter("[,]+");    


  while(sc.hasNextLine())
  {
    if(sc.hasNextInt())
    x = sc.nextInt();
    else {}
    if(sc.hasNextInt())
    y = sc.nextInt();
    else{}
    if(sc.hasNextInt())
    joe[x][y] = sc.nextInt();
  }    

答案 3 :(得分:0)

这可能不是最有效的方法,但它允许未知的阵列插入。

public int[][] loadArray(String file) {
    File fin = new File(file);
    BufferedReader br = null;
    try {
        br = new BufferedReader(new FileReader(fin));
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
    int width = 1;
    int[][] numbers = new int[1][1];
    String text = null;
    try {
        while ((text = br.readLine()) != null) {
            String i[] = text.split(", ");
            int a = Integer.parseInt(i[0]);
            int b = Integer.parseInt(i[1]);
            if (a > numbers.length) numbers = new int[a][width];
            if (b > width) {
                numbers = new int[numbers.length][b];
                width = b;
            }
            numbers[a][b] = Integer.parseInt(i[2]);
        }
    } catch (NumberFormatException | IOException e) {
        e.printStackTrace();
    }
    return numbers;
}