[英]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.