2016-04-21 7 views
-2

Это мой код для чтения из файла и отображения в консоличтение из файла в виде параллельных массивов в Java

try 
    { 
     BufferedReader readFile = new BufferedReader(new FileReader("sales.txt")); 
     String line = ""; 
     while((line = readFile.readLine()) != null) 
     { 
      String tmp[] = line.split(","); 
      year = Integer.parseInt(tmp[0]); 
      quarter = tmp[1]; 
      sales = Integer.parseInt(tmp[2]); 
      //System.out.printf("Year: %s\tQuarter: %s\tSales: %d\n",year,quarter,sales); 
     } 
     readFile.close(); 
    } 
    catch(IOException e) 
    { 
     e.printStackTrace(); 
    } 
    userInput.close(); 

в моем файле с именем «sales.txt» У меня есть это:

2012, Q1 , 9300

2012, Q2,10225

2012, Q3,12420

2012, Q4,13250

2013, Q1,10500

2013, Q2,10900

2013, Q3,11340

2013, Q4,14600

Теперь я застрял на том, как рассчитать средний объем продаж для q4 в год 2012 и 2013

+0

Вы узнали о переменных еще? – shmosel

+0

Прошу прощения, я не понимаю вопроса –

+0

Вычисление среднего является очень элементарной задачей. Если вы попытались это сделать, но у вас есть * конкретная проблема, отправьте свой код и объясните, что случилось. Если вы не знаете, что делать, я не уверен, что вы в нужном месте. – shmosel

ответ

0

// Или читать как массивы из файла

int[] year = new int [lineCount]; 
     String[] quarter = new String [lineCount]; 
     int[] sale = new int [lineCount]; 

     Scanner readFile = new Scanner(new File("sales.txt")); 

     while(readFile.hasNextLine()) 
     { 
      String salesRecords = readFile.nextLine(); 
      Scanner lineScan = new Scanner(salesRecords); 
      lineScan.useDelimiter(","); 
      year[i] = lineScan.nextInt(); 
      quarter[i] = lineScan.next(); 
      sale[i] = lineScan.nextInt(); 
      lineScan.close(); 
      i++; 
     } 
0

Только для этого случая:

 float avg = 0; 
    int counter = 0; 
    try 
     { 
      BufferedReader readFile = new BufferedReader(new FileReader("sales.txt")); 
      String line = ""; 
      while((line = readFile.readLine()) != null) 
      { 
       String tmp[] = line.split(","); 
       year = Integer.parseInt(tmp[0]); 
       quarter = tmp[1]; 
       sales = Integer.parseInt(tmp[2]); 
       if(year == 2012 || year == 2013) 
        if(quarter.equals("Q4"){ 
         counter++; 
         avg+=sales; 
        } 
       //System.out.printf("Year: %s\tQuarter: %s\tSales: %d\n",year,quarter,sales); 
      } 
      avg /= counter; //Here there is the average! in avg 
      readFile.close(); 
     } 
     catch(IOException e) 
     { 
      e.printStackTrace(); 
     } 
     userInput.close(); 
+0

, если добавить 'System.out.println (avg);' в консоли будет NaN –

+0

@KonstantinF попробуйте новый код – granmirupa

0
//Read from file and store data in Array List 
Scanner inputFile = new Scanner(new File("sales.txt")); 

    ArrayList<Integer> yearsList = new ArrayList<Integer>(); 
    ArrayList<String> quartersList = new ArrayList<String>(); 
    ArrayList<Integer> salesList = new ArrayList<Integer>(); 

    while(inputFile.hasNextLine()){ 
     String line = inputFile.nextLine(); 

     Scanner scanner = new Scanner(line); 
     scanner.useDelimiter(","); 
     while(scanner.hasNextLine()){ 
      yearsList.add(scanner.nextInt()); 
      quartersList.add(scanner.next()); 
      salesList.add(scanner.nextInt()); 
     } 
     scanner.close(); 
    } 

    inputFile.close(); 

    //. Testing Can I read the file properly 
    // System.out.println(years+" \n" + quarters + " \n" + sales); 

    //. Convert from ArrayList into Array 
    Integer[]yearsArray = yearsList.toArray(new Integer[yearsList.size()]); 
    String[] quartersArray = quartersList.toArray(new String[quartersList.size()]); 
    Integer[]salesArray = salesList.toArray(new Integer[salesList.size()]);