2015-03-03 1 views
0

В моем проекте мне нужно прочитать в двух разных файлах. Один читает в информации для 5 человек, другой - статистику для этих людей. Они выглядят так:Чтение файлов в два списка ArrayLists

PEOPLE: 
    1,Skippy,Jones 
    2,Rod,Stewart 
    3,Betty,Velveta 
    4,Gina,Ginger 
    5,Paul,Funyun 

STATS: 
    1 120 
    1 130 
    1 140 
    1 150 
    1 160 
    1 170 
    1 180 
    1 190 
    1 200 
    1 210 
    1 220 
    1 230 
    2 240 
    2 250 
    2 260 
    ETC.... 

Я хранение каждого Salesperson в качестве ArrayList и хотят хранить каждый из их статистики продаж за каждый месяц в других ArrayList. Затем я хочу установить эту статистику для каждого человека, а затем распечатать все эти цифры, используя toString().

Вопрос: Как я могу установить SalesStats на каждый месяц для каждого Salesperson в в SalesPeople ArrayList?

Salesperson Driver:

public static void main(String[] args) throws FileNotFoundException { 
    double monthSales = 0; 
    int currentLine = 0; 
    int currentLine2 = 0; 
    int personNumber = 0; 
    int personNumber2 = 0; 
    String firstName = ""; 
    String lastName = ""; 
    ArrayList<Salesperson> SalesPeople = new ArrayList<Salesperson>(4); 
    ArrayList<Double> SalesStats = new ArrayList<Double>(11); 


    // reads in NewPeople.txt 
      File NewPeople = new File("./src/NewPeople.txt"); 
      Scanner fileScanner = new Scanner(NewPeople); 

      // while there is a new line in the data, goes to the next one 
      while (fileScanner.hasNextLine()) { 
       String line = fileScanner.nextLine(); 
       Scanner lineScanner = new Scanner(line); 
       lineScanner.useDelimiter(","); 

       // while there is a new attribute to read in on a given line, reads 
       // data 
       while (lineScanner.hasNext()) { 
        personNumber = lineScanner.nextInt(); 
        firstName = lineScanner.next(); 
        lastName = lineScanner.next(); 

        Salesperson person = new Salesperson(personNumber, firstName, lastName); 

        SalesPeople.add(currentLine, person); 
        currentLine++; 
       } 

     // reads in SalesFigures.txt 
       File SalesFigures = new File("./src/SalesFigures.txt"); 
       Scanner fileScanner2 = new Scanner(SalesFigures); 

       // while there is a new line in the data, goes to the next one 
       while (fileScanner2.hasNextLine()) { 
        String line2 = fileScanner2.nextLine(); 
        Scanner lineScanner2 = new Scanner(line2); 
        lineScanner2.useDelimiter(" "); 

        // while there is a new attribute to read in on a given line, reads data 
        while (lineScanner2.hasNext()) { 

         personNumber2 = lineScanner2.nextInt();  
         int k = 0; 


         if(personNumber2 == 1) 
         { 
          k = 0; 
          monthSales = lineScanner2.nextDouble(); 
          SalesStats.add(currentLine2, monthSales); 
          SalesPeople.get(k).setSalesStats(SalesStats.get(currentLine2)); // need to assign this to all SalesPeople 
         } 
         else if(personNumber2 == 2) 
         { 
          k = 1; 
          monthSales = lineScanner2.nextDouble(); 
          SalesStats.add(currentLine2, monthSales); 
          SalesPeople.get(k).setSalesStats(SalesStats.get(currentLine2)); 
         } 
         else if(personNumber2 == 3) 
         { 
          k = 2; 
          monthSales = lineScanner2.nextDouble(); 
          SalesStats.add(currentLine2, monthSales); 
          SalesPeople.get(k).setSalesStats(SalesStats.get(currentLine2)); 
         } 
         else if(personNumber2 == 4) 
         { 
          k = 3; 
          monthSales = lineScanner2.nextDouble(); 
          SalesStats.add(currentLine2, monthSales); 
          SalesPeople.get(k).setSalesStats(SalesStats.get(currentLine2)); 
         } 
         else if(personNumber2 == 5) 
         { 
          k = 4; 
          monthSales = lineScanner2.nextDouble(); 
          SalesStats.add(currentLine2, monthSales); 
          SalesPeople.get(k).setSalesStats(SalesStats.get(currentLine2)); 
         } 




         currentLine2++; 
        } 

Salesperson Класс:

public class Salesperson { 

    private ArrayList<Double> salesStats = new ArrayList<Double>(12); 
    private int personNumber; 
    private String firstName; 
    private String lastName; 

public Salesperson(int personNumber, String firstName, String lastName) 

{ 
    this.personNumber = personNumber; 
    this.firstName = firstName; 
    this.lastName = lastName; 
} 


public ArrayList<Double> getSalesStats() { 
    return salesStats; 
} 


public void setSalesStats(ArrayList<Double> salesStats) { 
    this.salesStats = salesStats; 
} 


public int getPersonNumber() { 
    return personNumber; 
} 


public void setPersonNumber(int personNumber) { 
    this.personNumber = personNumber; 
} 




public String getFirstName() { 
    return firstName; 
} 


public void setFirstName(String firstName) { 
    this.firstName = firstName; 
} 


public String getLastName() { 
    return lastName; 
} 


public void setLastName(String lastName) { 
    this.lastName = lastName; 
} 


public String toString() 
{ 
    double sum = 0; 
    for(int i = 0; i < salesStats.size(); i++) 
     sum += salesStats.get(i); 

    double min = salesStats.get(0); 
    double max = salesStats.get(0); 

    for(double i: salesStats) { 
     if(i < min) min = i; 
     if(i > max) max = i; 
    } 

return "Sales statistics for " + firstName + " " + lastName + " :\n" + 
"\nSales for January: " + salesStats.get(0) + 
"\nSales for February: " + salesStats.get(1) + 
"\nSales for March: " + salesStats.get(2) + 
"\nSales for April: " + salesStats.get(3) + 
"\nSales for May: " + salesStats.get(4) + 
"\nSales for June: " + salesStats.get(5) + 
"\nSales for July: " + salesStats.get(6) + 
"\nSales for August: " + salesStats.get(7) + 
"\nSales for September: " + salesStats.get(8) + 
"\nSales for October: " + salesStats.get(9) + 
"\nSales for November: " + salesStats.get(10) + 
"\nSales for December: " + salesStats.get(11) + 
"\n Cumulative sales: " + sum + 
"\nHighest month of sales: " + max + 
"\nLowest month of sales: " + min; 

} 

} 
+0

Пожалуйста, не публикуйте свой полный код - в этом случае некоторый псевдокод, чтобы показать, что вы имели в виду, или даже просто хорошее текстовое описание. Нам не нужен весь проект, чтобы помочь. –

ответ

0

Пожалуйста, попробуйте этот код, его используя карту, чтобы решить эту проблему.

import java.io.File; 
import java.io.FileNotFoundException; 
import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.Iterator; 
import java.util.Map; 
import java.util.Scanner; 


public class SalesReport { 
    public static void main(String[] args) throws FileNotFoundException { 

     int currentLine = 0;  
     int personNumber=0;  
     String firstName = ""; 
     String lastName = ""; 
     ArrayList<Salesperson> SalesPeople = new ArrayList<Salesperson>(4); 

       File NewPeople = new File("newpeople.txt"); 
       Scanner fileScanner = new Scanner(NewPeople); 
       Map salesPeopleReport = new HashMap(); 
       // while there is a new line in the data, goes to the next one 
       while (fileScanner.hasNextLine()) { 
        String line = fileScanner.nextLine(); 
        Scanner lineScanner = new Scanner(line); 
        lineScanner.useDelimiter(","); 

        while (lineScanner.hasNext()) { 
         personNumber = lineScanner.nextInt();      
         firstName = lineScanner.next(); 
         lastName = lineScanner.next();  

         Salesperson person = new Salesperson(personNumber, firstName, lastName); 
         salesPeopleReport.put(personNumber,person); 
         SalesPeople.add(currentLine, person); 
         currentLine++; 
        }  

       } 

       printReport(salesPeopleReport); 

    } 

    private static void printReport(Map salesPeopleReport) throws FileNotFoundException { 
     File SalesFigures = new File("SalesFigure.txt"); 
     Scanner fileScanner2 = new Scanner(SalesFigures); 
     ArrayList<Salesperson> finalReport = new ArrayList<Salesperson>(); 
     ArrayList<Double> SalesStats = new ArrayList<Double>(11); 
     Salesperson person = null; 
     while (fileScanner2.hasNextLine()) { 
      String line2 = fileScanner2.nextLine(); 
      Scanner lineScanner2 = new Scanner(line2); 
      lineScanner2.useDelimiter(","); 

      while (lineScanner2.hasNext()) { 
       Iterator it = salesPeopleReport.keySet().iterator(); 
       int key = Integer.parseInt(lineScanner2.next()); 
       double salesStats = lineScanner2.nextDouble(); 

       if (person == null){ 
        person =(Salesperson) salesPeopleReport.get(key); 

        finalReport.add(person); 
       } 

       if (key == person.getPersonNumber()){     
        SalesStats.add(salesStats); 

       }else { 
        SalesStats = new ArrayList<Double>(11); 
        SalesStats.add(salesStats); 
        if (key != person.getPersonNumber()){ 
         person = null; 
        } 
       } 

      } 
      if(person!=null) 
      person.setSalesStats(SalesStats); 

     } 

     for(Salesperson salesperson : finalReport){ 
      System.out.println(salesperson.toString()); 
     } 
    } 
} 
Смежные вопросы