所以我的目标是读取一个带有整数和字符串的数组的文本文件,然后用一些数字进行一些计算,然后将原始数据和新计算的数据放入一个新的文本文件中。但是现在我只是陷入了我无法从文件中挑出数字并将它们放入ArrayList的地方,除非我这样做是错的。谢谢。
import java.util.*;
import java.io.*;
public class LAB02 {
public static void main(String[] args) throws FileNotFoundException {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
Scanner fileStockIn = new Scanner(new FileReader("Lab02Input.txt"));
PrintWriter reportFile = new PrintWriter("Lab02Report.txt");
ArrayList<Double> list = new ArrayList<Double>();
while(fileStockIn.hasNext()) //while loop to stay in loop while there are more records
{//begin while
double price = input.nextDouble();
double shares = input.nextDouble();
double dividend = input.nextDouble();
String ticker = input.next();
Double record = new Double(price, shares, dividend);
list.add(record);
}//end while
fileStockIn.close( );
reportFile.close( );
}
}
我正在读取的文本文件的输入(添加的项目符号点以便于阅读):
答案 0 :(得分:1)
我不知道您是如何尝试使用带有3个参数的构造函数实例化Double
类型。请参阅此处有关Double如何工作的文档。
https://docs.oracle.com/javase/7/docs/api/java/lang/Double.html
您要做的是 - 您需要一个包含三个属性的自定义类:
private class Calculation {
int price;
double shares;
double dividend;
//getters and setters here
//constructor
public Calculation (int price, double shares, double dividend) {
this.price=price;
this.shares = shares;
this.dividend = dividend;
}
}
然后在你的主要班级
List<Calculation> calculations = new ArrayList<Calculation>();
while(fileStockIn.hasNext()) {
//begin while
int price = input.nextInt();
double shares = input.nextDouble();
double dividend = input.nextDouble();
String ticker = input.next();
Calculation calculation = new Calculation(price, shares, dividend);
calculations.add(calculation);
}
希望这有帮助。
答案 1 :(得分:0)
为了简化它,只需使用以下内容:
ArrayList<Int> ilist = new ArrayList<Int>();
ArrayList<Double> dlist = new ArrayList<Double>();
ArrayList<Double> dlist2 = new ArrayList<Double>();
ArrayList<String> slist = new ArrayList<String>();
ArrayList<Double> results = new ArrayList<Double>();
while(fileStockIn.hasNext()) {
ilist.add(input.nextInt());
dlist.add(input.nextDouble());
dlist2.add(input.nextDouble());
slist.add(input.next());
}
现在,您可以将.get(index)
与for循环一起使用来执行计算
//just an example
double total = 0;
for(int i = 0; i < dlist.size() i++){
total += dlist.get(i);
results.add(dlist.get(i)/dlist2.get(i));
}