查找从文件中读取的字母数字数组中的数字元素并将其写入新文件

时间:2017-02-08 04:27:40

标签: java file arraylist

所以我的目标是读取一个带有整数和字符串的数组的文本文件,然后用一些数字进行一些计算,然后将原始数据和新计算的数据放入一个新的文本文件中。但是现在我只是陷入了我无法从文件中挑出数字并将它们放入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( );        

  }

}

我正在读取的文本文件的输入(添加的项目符号点以便于阅读):

  • 42.87 23.33 2.10 EXC
  • 12.00 83.33 0.17 ATVI
  • 28.15 35.00 0.80 MSFT
  • 42.98 23.26 0.65 CVS
  • 33.64 29.72 2.20 TXN
  • 55.51 18.01 2.00 NVS
  • 16.00 62.50 0.40 SPLS
  • 19.81 50.47 0.24 CSCO
  • 30.09 33.23 1.76 T
  • 39.29 25.45 0.60 DIS
  • 18.65 53.00 0.29 SNE
  • 50.21 19.21 0.72 AXP
  • 102.69 9.74 1.44 NIK

2 个答案:

答案 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));
}