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



我是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);
    }
  }
}

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

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

如果要将一行拆分为两个数字,可以使用

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
}

阅读该行后,您将不得不再次拆分 '","' 上的字符串。拆分字符串需要转换为中间字符串。你可以看到如下:

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.
        }
    }
  }
}

尝试使用类似的东西(添加也尝试 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] + " ");
        }
     }

最新更新