2016-04-13 26 views
-1

Bir dosya açtım ve iyi bir şekilde çıktı ve biraz böyle görünüyor;Ortalama ve toplamı hesaplamak için yardım alabilir miyim?

John Hop 13 12.00

Laura Shack 15.00

Ama alıcılar ve belirleyiciler ile başka bir sınıf olduğundan, dosya her bireyin toplam ödeme elde edebilir 6'ya kadar bir dizi 6:

John 13 12,00 150,00

Laura Shack 6 15,00 120,00

bütün bireyin toplam ödeme yazdırmak istediğiniz ve sonra ortalama al. Burada toplam ve ortalama (ya da en azından ortalamayı) hesaplamadan önce dosya içeriği kodumu bazıları

public class PayRoll { 

public static void main(String[] args) { 
    final int NUMBER_OF_WORKERS = 15; 

    final String INPUT_FILE = "data.txt"; 
    Worker[] worker_ar = new Worker[NUMBER_OF_WORKERS]; 

    Scanner file = null; 

    try { 

     file = new Scanner(new File(INPUT_FILE)); 
    } catch (FileNotFoundException e) { 
     System.err.println("File Not Found!"); 
    } 

    String line = null; 
    int count = 0; 
    double total_pay = 0; 
    double avg_pay = 0; 

    while ((file.hasNextLine()) && (count < worker_ar.length)) { 
     String fName = file.next(); 
     String lName = file.next(); 
     int hours = file.nextInt(); 
     double hrly_pay = file.nextDouble(); 

     worker_ar[count] = new Worker(fName, lName, hours, hrly_pay); 

     count++; 
//Here, i tried computing the average but it is wrong. 
     for (int i = 0; i < count; i++) 
      total_pay = total_pay + worker_ar[i].computePay(); 

      avg_pay = total_pay/count; 
+0

gibi bir şey. 'While' döngüsünü kurduktan sonra koyun, tüm ödemeyi "total_pay" olarak toplayıp, "count" ile bölersiniz. Düzenleme: Tıpkı Elliot'un verdiği cevap gibi. – Norsk

cevap

1

Bitiş okumasıdır. Sen döngü içindeyken o `için()` döngü var gerekmez

double total_pay = 0; 
while ((file.hasNextLine()) && (count < worker_ar.length)) { 
    String fName = file.next(); 
    String lName = file.next(); 
    int hours = file.nextInt(); 
    double hrly_pay = file.nextDouble(); 
    worker_ar[count] = new Worker(fName, lName, hours, hrly_pay); 
    total_pay += worker_ar[count].computePay(); // <-- add this worker's 
               //  pay to the total. 
    count++; 
} 
double avg_pay = total_pay/count; // <-- calculate the average when 
            //  there is a total. 
+0

Çok teşekkürler. İşe yaradı. Bu küçük detaylar bir programı gerçekten etkileyebilir. Tekrar teşekkürler. –

İlgili konular