在具有双精度的二维数组中输入文本文件

Input a text file in a two dimensional array with doubles

我是 Java 的新人。 我想输入一个文本文件并从中创建一个二维数组,输入是 像这样

12,242 323,2324
23,4434 23,4534
23,434 56,3434
....
34,434 43,3443

我试过了

import java.util.Scanner;

import java.io.File;
import java.io.IOException;

public class InputText {

/**
 * @param args the command line arguments
 * @throws java.io.IOException
 */
 public static void main(String[] args) throws IOException {
    int i=0; 
    File file;
    file = new File("file.txt");
    Scanner read=new Scanner(file);

    while (read.hasNextLine()) {
      String line=read.nextLine();
      System.out.println(line);
    }
  }
}

这给了我输入,但我无法将其插入数组我尝试了不同的方式,比如拆分它。

有什么建议吗? 抱歉不清楚。我提到的输入是由空格分隔的双打。另外,我给你的格式是我运行我编写的部分程序后得到的。我在文本文件中看到的是由空格分隔的数字。我尝试实施您的建议,但似乎没有任何效果。我真的迷路了....

阅读该行后..您将不得不再次将字符串拆分为“,”。拆分后的字符串需要转换成整数。你可以看到如下:

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

public class InputText {

/**
 * @param args the command line arguments
 * @throws java.io.IOException
 */
public static void main(String[] args) throws IOException {
    int i = 0;
    File file;
    file = new File("file.txt");
    Scanner read = new Scanner(file);

    while (read.hasNextLine()) {
        String line = read.nextLine();
        String[] numbers = line.split(",");
        for (i = 0; i < numbers.lenght; i++) {
            String numStr = numbers[i];
             String x=numStr.replaceAll("\s+",""); //eleminate the space in any.
            Double num = Double.valueOf(x);
            System.out.println(" num is: " + num); //Here you can store the number in array.
        }
    }
  }
}

如果你想将一行分成两个数字,你可以使用

string[] numbers = line.split("\s+");

如果你想用逗号读双

NumberFormat format = NumberFormat.getInstance(Locale.FRANCE);
...
double d1 =  format.parse(numbers[0]).doubleValue();
double d2 =  format.parse(numbers[1]).doubleValue();

我个人更喜欢使用扫描仪。在那种情况下用

创建它
Scanner scanner = new Scanner(file);

while (scanner.hasNextLine()) {
  Scanner scanner2 = new Scanner(scanner.nextLine()).useLocale(Locale.FRANCE);
  if (!scanner2.hasNextDouble()){ 
    System.out.println("Do not have a pair");
    continue;
  }
  double d1 = scanner2.nextDouble();
  if (!scanner2.hasNextDouble()){ 
    System.out.println("Do not have a pair");
    continue;
  }
  double d2 = scanner2.nextDouble();
  //do something
}

尝试使用类似的东西(同时添加 try catch 语句)

    String line = "";
    br = new BufferedReader(new FileReader("file.txt"));
    int i=0;
    while ((line = br.readLine()) != null) {
        // use comma as separator
        String[] lineArray= line.split(",");
        for(int j=0;j<lineArray.length;j++){
           my2DArray[i][j] = lineArray[j];
        }
        i++;
    }
    for(int i=0;i<my2DArray[0].length;i++){
        for(int j=0;j<my2DArray[1].length;j++){
            System.out.print(my2DArray[i][j] + " ");
        }
     }