从文本文件中读取,并以私有方式返回到arraylist

时间:2014-04-08 17:47:12

标签: java file-io arraylist

我尝试了很多东西,而且我对这个问题非常困惑。

我必须从文本文件中读取,并将其放入私有方法的arraylist中。

然后制作一个新的方法来打印arraylist。

这是我到目前为止所尝试过的。

我收到此错误:

fileHandling.java:11: readArray(java.util.ArrayList<java.lang.String>) in fileHandling cannot be applied to ()
  readArray();      
  ^
1 error

我的代码:

import java.util.Scanner;
import java.io.*;
import java.util.*;
public class fileHandling {   
    private ArrayList<String> Person;

    public static void main(String[] args)throws Exception {
        readArray();      
    }

    private ArrayList readFile() throws Exception {
        File file = new File("person.rtf");
        Scanner scanner = new Scanner(file);

        while(scanner.hasNextLine()) {
            String str = scanner.nextLine();
            Person.add(str);                     
        }
        return Person;
    }

    public void readArray(ArrayList<String> Person) {  

        for(int i =0; i < Person.size(); i++) {
            System.out.println(Person.get(i));
        }
    }
}

我认为错误是当我调用我的方法时,括号内的内容是什么?

4 个答案:

答案 0 :(得分:0)

你有一些问题(我看到了)。

1)您没有实例化您班级的实例。

2)你没有阅读文件。

3)您没有使用readArray致电List

4)你没有List个实例。

5)ArrayList<String> readFile()

我想你想要这样的东西,

private ArrayList<String> Person = new ArrayList<String>();
public static void main(String[] args) throws Exception
{
  // readArray();
  fileHandling fh = new fileHandling();
  fh.readArray(fh.readFile()); // <-- something like this
}

答案 1 :(得分:0)

您应该使用bufferedInputStream来读取您的文件......

变量不应该大写,你的数组也应该被称为person而不是Person。

别忘了初始化你的     ArrayList persons = new ArrayList();

您的主要方法应首先调用read方法。

答案 2 :(得分:0)

如果您使用Java 7,它就像:

一样简单
// returns a List<String> with all lines in the file
Files.readAllLines(thePath, StandardCharsets.UTF_8);

答案 3 :(得分:0)

首先,您将无法从main访问readArray(),因为readArray()不是静态的。在当前的上下文中,您需要在main中创建一个fileHandling实例,并在其上调用readArray()。

其次,您的readArray()方法是使用ArrayList Person作为参数声明的,但是您在主方法中没有参数的情况下调用它。

第三,它对编译没有帮助,但Java中的经验法则是大写一个类的第一个字母(应该是FileHandling)并且不要大写声明的第一个字母(ArrayList Person应该是ArrayList人)。