非常初学java。我的程序只打印一个长列而不是二维数组。为了测试,我使用一个包含10行和20列的文件,但实际文件将是20列和几千行,我不知道有多少。我已经阅读了我在互联网上可以找到关于这个主题的所有帖子,但仍然无法让程序运行。有什么想法吗?
1 2 4 6 9 13 15 16 21 28 34 37 41 48 50 52 53 54 57 68
6 7 10 17 23 24 27 28 31 39 42 43 46 48 50 55 60 61 67 70
2 3 5 7 11 14 15 20 28 45 46 47 48 52 56 61 62 63 66 70
4 5 7 11 13 15 19 23 24 27 28 35 38 40 48 50 57 58 64 66
3 8 20 26 27 32 36 38 39 43 45 47 50 53 54 56 59 61 67 68
1 3 5 7 15 19 26 30 31 36 41 44 48 49 56 58 59 60 61 65
1 2 4 6 9 13 15 16 21 28 34 37 41 48 50 52 53 54 57 68
6 7 10 17 23 24 27 28 31 39 42 43 46 48 50 55 60 61 67 70
2 3 5 7 11 14 15 20 28 45 46 47 48 52 56 61 62 63 66 70
4 5 7 11 13 15 19 23 24 27 28 35 38 40 48 50 57 58 64 66
这是代码
try {
FileInputStream fstream = new FileInputStream("C:\\keno.txt");
// Get the object of DataInputStream
DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine = "";
String[] tokens;
//Read File Line By Line
int row = 0;
String userdata [][]= new String [10][21];
while ((strLine = br.readLine()) != null) {
// Copy the content into the array
tokens = strLine.split(" +");
for(int j = 0; j < tokens.length; j++) {
userdata[row][j] = tokens[j];
}
row++;
}
for(int i = 0; i < userdata.length; i++) {
for(int j=0; j < userdata[i].length; j++){
System.out.println(userdata[i][j]);
}
}
in.close();
} catch (Exception e) {
System.err.println("Error: " + e.getMessage());
}
答案 0 :(得分:0)
我写了一个简短的程序,做我认为你想做的事情。我的代码首先将txt文件中的所有数据提取到stringarray,然后用分隔符“”(空格)分割每个字符串。最后,字符串被解析为长格式。希望这能帮助你。
重要说明:txt文件必须具有相同的尺寸,这意味着如果第一行有20个元素,则每行必须有20个元素。 AND:每行必须以元素结尾,而不是以空格结尾。让我知道这是否有用,如果没有,你遇到麻烦!
格尔茨
import java.io.*;
import java.util.ArrayList;
public class ReadFileInto2dArray{
public static void main(String[] arg) throws FileNotFoundException, IOException, NumberFormatException {
// IMPORT DATA FROM TXT FILE AS STRINGARRAY
String filedirectory = "C:\\Users\\thomas\\Desktop\\Neuer Ordner\\keno.txt";
BufferedReader b = new BufferedReader(new FileReader(filedirectory));
String str=null;
ArrayList<String> lines = new ArrayList<String>();
while((str = b.readLine()) != null){
lines.add(str);
}
String[] strArr = lines.toArray(new String[lines.size()]);
b.close();
// GET DIMENSIONS: number of rows
int nRows = strArr.length;
// GET DIMENSIONS: number of elements in the first line
int nCols = (strArr[0].length()-strArr[0].replace(" ", "").length())+1;
// INITIALIZE LONG 2D ARRAY (MATRIX)
long[][] data = new long[nRows][nCols];
// SPLIT EACH STRING OF ROW INTO SUBSTRING AND PARSE TO LONG FORMAT
String[] split = new String[nCols];
for (int r=0; r<nRows; r++){
split = strArr[r].split(" ");
for (int c=0; c<nCols; c++) {
data[r][c] = Long.parseLong(split[c]);
}
}
b.close();
// SHOW THAT IT WORKED
System.out.println("first element: data[0][0] should be 1: " + data[0][0]);
System.out.println("last element data[9][19] should be 66: " + data[9][19]);
}
}