2017-02-08 1 views
1

Так что моя цель состоит в том, чтобы прочитать текстовый файл, который представляет собой массив с целыми числами и строками, а затем выполнить некоторые вычисления с некоторыми числами , затем поместите исходные данные вместе с новыми вычисленными данными в новый текстовый файл. Но прямо сейчас я просто застрял там, где я не могу выбрать номера из файла и поместить их в 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 ПНВ
  • 16.00 62.50 0.40 SPLS
  • 19.81 50.47 0.24 CSCO
  • 30.09 33.23 1.76 Т
  • 39.29 25.45 0.60 ДИС
  • 18.65 53.00 0.29 СНЭ
  • 50.21 19.21 0.72 AXP
  • 102.69 9.74 1.44 NIK
+0

, что происходит? это исключение? больше информации пожалуйста – nhouser9

+0

Почему вы назвали свой класс 'Double', который уже является классом Java? –

+0

Если вы хотите прочитать текстовый файл, вы должны просто использовать 'fileStockIn'. 'Scanner input = new Scanner (System.in);', похоже, здесь не очень полезно. –

ответ

1

Я не знаю, как вы пытаетесь создать экземпляр a Double тип с конструктором с 3 параметрами. См. Документацию о том, как работает Double.

https://docs.oracle.com/javase/7/docs/api/java/lang/Double.html

То, что вы пытаетесь сделать IS-вам нужен специальный класс, который держит три свойства, как это:

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

Надеюсь это поможет.

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) с петлями для для выполнения Calcs

//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)); 
} 
Смежные вопросы