>我正在尝试创建一个使用扫描仪从数据文件(双精度类型(中获取输入并填充 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;
}