Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 读取文本文件,并以私有方法返回arraylist_Java_File Io_Arraylist - Fatal编程技术网

Java 读取文本文件,并以私有方法返回arraylist

Java 读取文本文件,并以私有方法返回arraylist,java,file-io,arraylist,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 fi

我尝试过很多事情,我被困在这个问题中

我必须读取一个文本文件,然后以私有方法将其放入arraylist中

然后创建一个新方法来打印arraylist

这就是我迄今为止所尝试的

我得到这个错误:

fileHandling.java:11: readArray(java.util.ArrayList<java.lang.String>) in fileHandling cannot be applied to ()
  readArray();      
  ^
1 error
fileHandling.java:11:fileHandling中的readArray(java.util.ArrayList)不能应用于()
readArray();
^
1错误
我的代码:

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));
        }
    }
}
import java.util.Scanner;
导入java.io.*;
导入java.util.*;
公共类文件处理{
私人律师;
公共静态void main(字符串[]args)引发异常{
readArray();
}
私有ArrayList readFile()引发异常{
File File=新文件(“person.rtf”);
扫描仪=新扫描仪(文件);
while(scanner.hasNextLine()){
String str=scanner.nextLine();
人。加(str);
}
返回人;
}
public void readArray(ArrayList Person){
对于(inti=0;i
我认为错误在于当我调用我的方法时,括号内是什么?

您有一些问题(我看到了)

1) 您没有实例化类的实例

2) 您没有读取该文件

3) 您没有使用
列表调用
readArray

4) 您没有
列表
实例

5)
ArrayList 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
}
private ArrayList Person=new ArrayList();
公共静态void main(字符串[]args)引发异常
{
//readArray();
fileHandling fh=新的fileHandling();

fh.readArray(fh.readFile());//您应该使用bufferedInputStream来读取文件

变量不应该大写,数组也应该称为Person而不是Person

别忘了初始化你的 ArrayList persons=新建ArrayList()


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

如果您使用Java 7,那么它非常简单:

// returns a List<String> with all lines in the file
Files.readAllLines(thePath, StandardCharsets.UTF_8);
//返回包含文件中所有行的列表
文件.readAllLines(路径,StandardCharsets.UTF_8);

首先,由于readArray()不是静态的,您将无法从main访问readArray()。在当前上下文中,您需要在main中创建文件处理实例并调用readArray()

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


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

你需要初始化你的ArrayList。也可以用camelCase来表示可变名称。你调用
readArray
时就像调用一个静态方法一样。哦,你的
readFile
方法被声明为返回一个原始类型……你能说得具体一点吗,我需要做什么?