我正在阅读的文件包含40
个不同的字符串,我想将其放在2d-array
中,其大小为[10][4]
。
代码
public class GetAnswers {
public static void main(String[] args) {
try (BufferedReader br = new BufferedReader(new FileReader("Answers.txt")))
{
String [][] answers;
answers = new String[10][4];
String line;
int i = 0;
String [] temp;
while ((line = br.readLine()) != null) {
temp = line.split("\n");
for (int j = 0; j < answers[i].length; j++)
{
answers[i][j] = temp[j];
System.out.println(j);
}
i++;
}
//System.out.println(answers[1][2]);
} catch (IOException e) {
e.printStackTrace();
}
文本文件格式:
apple
orange
dog
cat
答案 0 :(得分:2)
假设金额受到控制,那么您需要为temp
创建一个单独的索引,并且还有一个内部for
循环
int x = 0;
for (int i = 0; i < 10; i++) { // outer
for (int y = 0; y < 4; y++) { // inner
answers [i][j] = temp[x++];
}
}
但在此之前我会阅读所有行并将它们放在一个StringBuilder
中,在执行此循环之前,可以拆分和验证 强>
答案 1 :(得分:1)
你有两个选择,一个是Scary Wombat在那里描述的。
第二个是您可以创建一维数组,并将其视为二维数组。
answers = new int[40];
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 4; j++) {
answers [i*10 + j] = temp[x++];
}
}
答案 2 :(得分:1)
我认为最有效的答案。在这里你找到了
import java.io.*;
public class GetAnswers {
public static void main(String[] args) {
try (BufferedReader br = new BufferedReader(new
FileReader("GetAnswers.txt")))
{
String [][] answers;
answers = new String[10][4];
String line;
int i = 0;
String [] temp = new String [40];
while ((line = br.readLine()) != null) {
temp[i++] = line;
}
for(int j=0; j<temp.length; j++){
answers[j/4][j%4] = temp[j];
System.out.println(answers[j/4][j%4]);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}