我有一个包含以下内容的文本文件:
10/23/2013 47 34 23 31 03 13
10/19/2013 33 09 56 54 57 05
10/16/2013 03 42 26 34 28 27
10/12/2013 10 58 26 57 08 04
我能够使用Scanner并将日期添加到ArrayList“DATE”,然后我将其余的数字添加到另一个ArrayList“NUM”(参见代码)
我正在尝试构建一个ArrayList> “MAIN”或甚至是将每行作为索引保存的HashMap如下:
MAIN [[47,34,23,31,03,13],[33,09,56,54,57,05],[03,42,26,34,28,27],[10, 58,26,57,08,04]
我无法使用下面的代码获得所需的结果,我需要帮助重构代码以获得所需的结果
谢谢。
public class Grades {
static String line;
static BufferedReader reader;
static String file = "file/Grades.txt";
static ArrayList<ArrayList<String>> MAIN;
static ArrayList<String> NUM ;
static ArrayList<String> DATE ;
static ArrayList rand;
static int index = 0;
public static void main(String args[]) {
MAIN = new ArrayList<ArrayList<String>>();
//lotoNum();
DATE = new ArrayList<String>();
try {
Scanner scan = new Scanner(new BufferedReader(new FileReader(file)));
wwhile(scan.hasNextLine()){
NUM = new ArrayList<String>();
String token = scan.nextLine();
String [] line = token.split(" ");
DATE.add(line[0]);
for (int i = 1; i < line.length; i++){
NUM.add(line[i]);
}
MAIN.add(index, NUM);
index++;
System.out.println(MAIN);
//NUM.clear();
//NUM.trimToSize();
}
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
输出:
[[47,34,23,31,03,13]]
[[47,34,23,31,03,13],[33,09,56,54,57,05]]
[[47,34,23,31,03,13],[33,09,56,54,57,05],[03,42,26,34,28,27]]
[[47,34,23,31,03,13],[33,09,56,54,57,05],[03,42,26,34,28,27],[10,58,26, 57,08,04]]
答案 0 :(得分:0)
试试这个
int index = 0;
while (scan.hasNextLine()){
String line = scan.nextLine();
String[] tokens = line.split(" ");
// you must create a new list everytime or else they will
// reference the same object. That's why you're getting the output.
// you are. Also delete the declareation outside of this loop
// ArrayList<String> NUM; ---- NUM = new ArrayLis<String>();
ArrayList<String> NUM = new ArrayLis<String>();
DATE.add(tokens[0]);
for (int i = 1; i < tokens.length; i++){
NUM.add(tokens[i]);
}
MAIN.add(index, NUM);
index++;
System.out.println(MAIN);
NUM.clear();
}