簡體   English   中英

在帶有雙精度的二維數組中輸入文本文件

[英]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);
    }
  }
}

這給了我輸入,但是我無法將其插入數組中,因此嘗試了諸如拆分之類的不同方法。

有什么建議么? 抱歉,不清楚。 我提到的輸入是用空格分隔的雙精度數。 我給您的格式也是我運行編寫的程序部分后得到的格式。 我在文本文件中看到的是用空格分隔的數字。 我嘗試執行您的建議,但似乎無濟於事。 我真的在這里迷路了...

如果要將一條線分割成兩個數字,可以使用

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] + " ");
        }
     }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM