我有一个包含数百个双打的文本文件,全部用逗号分隔,我正在尝试编写一个方法,将每个双精度数转换为双精度数组列表。这是我的代码:
public void ReadFile(String inputfile) throws FileNotFoundException {
File myFile = new File(inputfile);
Scanner sc = new Scanner(myFile);
try {
while (sc.hasNextDouble()) {
int i = 0;
arraylist.add(sc.useDelimiter(","));
i++;
}
} catch (Exception e) {
System.out.println("Error");
}
sc.close();
}
我遇到的问题是arraylist.add(sc.useDelimiter(","))'
行
我得到一个错误说“类型ArrayList中的方法add(Double)不适用于参数(Scanner)”。我不确定如何解决这个问题。有帮助吗?
答案 0 :(得分:0)
您必须将useDelimiter
移到循环之外。您还必须调用nextDouble
来迭代文件中的数字。
public static List<Double> readFile(String inputfile) throws FileNotFoundException{
List<Double> arraylist = new ArrayList<Double>();
File myFile = new File(inputfile);
Scanner sc = new Scanner(myFile);
sc.useDelimiter(",");
try {
while (sc.hasNextDouble()) {
Double number = sc.nextDouble();
arraylist.add(number);
}
}catch (Exception e) {
System.out.println("Error");
}
sc.close();
return arraylist;
}
另外请遵循Java中适当的命名约定。方法名称应以小写字母开头。
答案 1 :(得分:0)
正如@Hovercraft所说,您需要设置一次分隔符并将其移动到初始化扫描仪的位置。它应该是这样的:
public void ReadFile(String inputfile) throws FileNotFoundException {
File myFile = new File(inputfile);
Scanner sc = new Scanner(myFile);
List<double> doublelist = new ArrayList<Double>();
//this is where you set the delimiter
sc.useDelimiter(",")
try {
while (sc.hasNextDouble()) {
doublelist.add(sc.nextDouble());
}
} catch (Exception e) {
System.out.println("Error");
}
sc.close();
}