从另一个类的返回值中检索对象时编译时间错误。

时间:2014-08-24 20:21:01

标签: java object methods arraylist return

我收到以下代码的编译时错误。第一个代码块在文本文件中扫描,并提供get方法以检索Array List中的最大值。那段代码编译得很好。第二段代码是我遇到困难的地方。我对编程很新,而且我很难理解我的错误。

    public class DataAnalyzer {

    public DataAnalyzer(File data) throws FileNotFoundException
    {

    {
    List<Integer> rawFileData = new ArrayList<>();
    FileReader file = new FileReader("info.txt");
    try (Scanner in = new Scanner(file)) {
        while(in.hasNext())
        {
            rawFileData.add(in.nextInt());
        }
    }
    }
    }

    public int getLargest(List<Integer> rawFileData){
    return Collections.max(rawFileData);
    }

    }

这是我试图实施的测试人员类。我收到编译时错误。

    public class DataAnalyzerTester {

    /**
    * @param args the command line arguments
    */
    public static void main(String[] args) {
    System.out.println("Enter your fileName: ");              
    }

    public void printLargest(DataAnalyzer rawFileData)
    {
    rawFileData.getLargest();
    System.out.println(rawFileData.getLargest());
    }
    }    

1 个答案:

答案 0 :(得分:2)

我尝试运行您的代码,您在DataAnalyzerTester的第14行遇到问题,您需要将List<Integer>的参数传递给方法getLargest()

以这种方式试用你的测试器:

public class DataAnalyzerTester {

    /**
     * @param args
     *            the command line arguments
     */
    public static void main(String[] args) {
        System.out.println("Enter your fileName: ");
    }

    public void printLargest(DataAnalyzer rawFileData) {
        List<Integer> example = new ArrayList<Integer>();
        example.add(0);
        example.add(1);
        example.add(2);
        int result = rawFileData.getLargest(example);
        System.out.println(result);
    }
}

--------------编辑--------------------

尝试这样的事情:

    public class DataAnalyzer {

    private List<Integer> rawFileData;

    public DataAnalyzer(String fileName) throws FileNotFoundException {

        rawFileData = new ArrayList<>();
        FileReader file = new FileReader(fileName);
        try (Scanner in = new Scanner(file)) {
            while (in.hasNext()) {
                rawFileData.add(in.nextInt());
            }
        }
    }

    public int getLargest() {
        return Collections.max(rawFileData);
    }

}

public class DataAnalyzerTester {

    public static void main(String[] args) throws FileNotFoundException {
        DataAnalyzer analizer = new DataAnalyzer("info.txt");
        System.out.println(analizer.getLargest());
    }

}

enter image description here