Java 读取文本文件时,ArrayList不会在for循环中填充
我正试图编写一个程序,看看哪些数字显示了百万富翁中每一个球的最佳结果(只是为了好玩,我明白这无助于你预测未来) 问题是: ArrayList不会从BufferedReader的输入中填充,但我可以将任何内容打印到控制台,只是不能将其添加到数组或ArrayList中 我很抱歉,这是多么草率和所有奇怪的命名:Java 读取文本文件时,ArrayList不会在for循环中填充,java,arraylist,bufferedreader,Java,Arraylist,Bufferedreader,我正试图编写一个程序,看看哪些数字显示了百万富翁中每一个球的最佳结果(只是为了好玩,我明白这无助于你预测未来) 问题是: ArrayList不会从BufferedReader的输入中填充,但我可以将任何内容打印到控制台,只是不能将其添加到数组或ArrayList中 我很抱歉,这是多么草率和所有奇怪的命名: public static void main(String[] args) { MathStats mathStats = new MathStats(); getF
public static void main(String[] args) {
MathStats mathStats = new MathStats();
getFileInfo(); //Same class as main.
System.out.println();
System.out.println(mathStats.num1.size());
//num1 should be populated after calling getFileInfo();
} //End of main
private static void getFileInfo() {
File listOfTickets = new File(**FILE**);
MathStats mathStats = new MathStats();
try {
BufferedReader getInfo = new BufferedReader(new FileReader(
listOfTickets));
String ticketInfo = getInfo.readLine();
for (int i = 0; ticketInfo != null; i++) {
ticketInfo.split("\n");
System.out.println(ticketInfo);
int a = Integer.parseInt(ticketInfo.substring(25,
27));
int b = Integer.parseInt(ticketInfo.substring(28,
30));
int c = Integer.parseInt(ticketInfo.substring(31,
33));
int d = Integer.parseInt(ticketInfo.substring(34,
36));
int e = Integer.parseInt(ticketInfo.substring(37,
39));
int f = Integer.parseInt(ticketInfo.substring(40,
42));
mathStats.setArrayValues(a, b, c, d, e, f);
mathStats.setCount(i);
ticketInfo = getInfo.readLine();
}
getInfo.close();
} catch (FileNotFoundException e) {
System.out.println("Can't find file");
System.exit(0);
} catch (IOException e) {
System.out.println("An I/O Error Occured");
System.exit(0);
}
}
方法setArrayValues只是将各个int添加到其ArrayList或至少其假定值。它使用普通列表。添加(a);添加每个int
问题是,在测试main中每个ArrayList的大小时(调用此方法后),它每次都返回0
如果您想测试文本文件,可以将一些数据放入其中(删除中间的多余行)
2014年4月11日百万富翁09-15-24-39-41[01],Megaplier®:X4
2014年10月31日百万富翁11-29-36-58-67[15],Megaplier®:X2
2014年10月28日百万富翁03-50-57-58-60[11],Megaplier®:X5
2014年10月24日百万富翁02-14-21-28-55[03],Megaplier®:X3
2014年10月21日百万富翁05-35-37-41-66[11],Megaplier®:X5
2014年10月17日百万富翁21-31-43-56-60[12],Megaplier®:X4
下面是SetArrayValue
正如Guido所说,您正在getFileInfo方法中实例化一个新的MathStats,因此不会填充在main中安装的MathStats。您可以通过将main中创建的引用传递给getFileInfo方法来解决此问题:
public static void main(String[] args) {
MathStats mathStats = new MathStats();
getFileInfo(mathStats); //Same class as main.
System.out.println();
System.out.println(mathStats.num1.size());
//num1 should be populated after calling getFileInfo();
} //End of main
private static void getFileInfo(MathStats mathStats) {
File listOfTickets = new File(**FILE**);
try {
//..
您能显示
setArrayValue
的代码吗?您的catch块没有做任何异常操作。至少尝试添加一个打印堆栈跟踪。@NikhilTalreja我不明白为什么。。。“找不到文件”是很自然的,我们通常不需要查看它发生在哪一行。问题可能在MathStats
类中,但您对我们隐藏了它。找不到文件是,但如果您获取我提供的数据,把它扔到一个文本文件中,使用我放置文件的文本文件路径,然后它就可以读取文件了。非常感谢!这就解决了!
public static void main(String[] args) {
MathStats mathStats = new MathStats();
getFileInfo(mathStats); //Same class as main.
System.out.println();
System.out.println(mathStats.num1.size());
//num1 should be populated after calling getFileInfo();
} //End of main
private static void getFileInfo(MathStats mathStats) {
File listOfTickets = new File(**FILE**);
try {
//..