Java - 将文件读入数组并在之后使用该数组的问题

时间:2016-11-03 23:02:41

标签: java arrays java.util.scanner

我创建了一个将文本文件读入整数数组的类,我相信我已经正确完成了。然后我想在其中创建一个方法 (getInt();) 来获取数组的第一个索引,然后每次调用它时获取以下索引元件。

我有想法在每次调用它时都会增加它以获取以下索引元素,但我遇到的主要问题是我无法在try语句之外访问我的列表,因此我无法创建方法为了它。

有人可以建议一段代码或任何有关如何创建此方法的建议吗?

import java.io.*;
import java.util.*;

public class ScannerIntegerList {

   public static void main(String[] args) {
      try {
         FileReader file = new FileReader("file.txt");
         BufferedReader input = new BufferedReader(file);

         List<Integer> list = new ArrayList<Integer>();

         String temp = "";

         while ((temp = input.readLine()) != null)
            if (!temp.trim().equals("0"))
               list.add(new Integer(temp));

         input.close();

         int i = 0;
         System.out.println(list.get(i));
         i++;

      } catch (IOException ie) {
         System.out.println(ie);
      }
   }

}

另外作为旁注,我正在使用eclipse,每当我尝试删除public static void main(String [] args)时,它告诉我需要它,任何人都可以解释为什么会发生这种情况以及如何解决它,特别是用这段代码?

当这个类完成时,文件名也将来自命令行,所以对此的任何建议都将非常感激。

非常感谢提前

1 个答案:

答案 0 :(得分:0)

如果你想在try块之外使用list,请在外面声明并初始化。

此外,在使用可关闭资源时使用try-with-resources,如下所示:

List<Integer> list = new ArrayList<>();

try (BufferedReader input = new BufferedReader(new FileReader("file.txt"))) {
    String temp = "";
    while ((temp = input.readLine()) != null) {
        if (!temp.trim().equals("0")) {
            list.add(new Integer(temp));
        }
    }
} catch (IOException e) {
    e.printStackTrace();
}

// you can use list here, knock yourself out

如果文件名来自命令行, 那么你真的需要public static void main(String[] args)方法。 您的程序将在args数组中接收命令行参数。 如果文件名是第一个命令行参数, 您可以通过args[0]使用它。