需要创建用扫描仪填充的 ArrayList 方法



>我正在尝试创建一个使用扫描仪从数据文件(双精度类型(中获取输入并填充 Arraylist(double( 的方法。我在主课上创建了一个扫描仪。我不确定如何让它正常工作,尽管我觉得我快到了。

这是我的主要和公开课

import java.util.Scanner;
import java.util.*;
public class Prog11{
public static void main(String [] args){
    Scanner inFile = new Scanner(System.in);
    readArr(inFile);
}

这是我的方法

public static double[] readArr(Scanner inFile){
    ArrayList <Double> examList = new ArrayList<Double>();
    while(inFile.hasNextDouble()){
        input.add(inFile.nextDouble());
    }
    return examList;
}

这是留下的两个错误

./Prog11.java:33: error: cannot find symbol
            input.add(inFile.nextDouble());
            ^
  symbol:   variable input
  location: class Prog11

./Prog11.java:36: error: incompatible types: ArrayList<Double> cannot be 
converted to double[]
return examList;

两个问题。第一,你需要返回一个列表,而不是一个数组;第二,你的变量inFile不是input

public static List<Double> readList(Scanner inFile){
    List<Double> examList = new ArrayList<Double>();
    while(inFile.hasNextDouble()){
        inFile.add(inFile.nextDouble());
    }
    return examList;
}

如果绝对必须返回数组,请使用

public static double[] readList(Scanner inFile) {
    List<Double> examList = new ArrayList<Double>();
    while(inFile.hasNextDouble()){
        inFile.add(inFile.nextDouble());
    }
    double[] arr = new double[examList.size()];
    for (int i = 0; i < examList.size(); i++) {
        arr[i] = examList.get(i);
    }
    return arr;
}

那是因为你没有返回预期的,如果你说你要double[],并且在方法中你返回一个arrayList<Double>所以你需要决定你要回放什么。

public static ArrayList <Double> readArr(Scanner inFile){
ArrayList <Double> examList = new ArrayList<Double>();
while(inFile.hasNextDouble()){
     input.add(inFile.nextDouble());
 }
 return examList;
 }

最新更新