public class lieferscheine {
    
    lieferschein[] lieferscheine;
    Landwirt[] landwirte;
    int lieferscheinzahl;
    Readfile file;

    public lieferscheine() {
        lieferscheinzahl = 0;
        lieferscheine = new lieferschein[501];
        landwirte = new Landwirt[1000];
    }
    
    boolean einlesen(Landwirt[] landwirte) {
        this.landwirte = landwirte;
        lieferschein schein = new lieferschein();
        file = new Readfile("c:\\daten", "lieferscheinzeilen.txt");
        boolean ok = true;
        String ohrmarkennr, kontrollnr, gewicht;
        int lieferscheinnr, leerzeichen1, leerzeichen2, i = 0;
        
        while(null != (s = file.readLine())) {
            if(-1 == (leerzeichen1 = s.indexOf(" ")) {
                ok = false;
            }
            else {                
                lieferscheinnr = s.substring(0, leerzeichen1);
            }    
            
            if(-1 == (leerzeichen2 = s.indexOf(" ", leerzeichen1+1)) {
                ok = false;
            }    
            else {
                kontrollnr = s.substring(leerzeichen1+1, leerzeichen2);
                schein.zeilen[i].kontrollnr = kontrollnr;
            }
            
            if(-1 == (leerzeichen3 = s.indexOf(" ", leerzeichen2+1)) {
                ok = false;
            }
            else {
                ohrenmarkennr = s.substring(leerzeichen2+1, leerzeichen3);
                gewicht = s.substring(leerzeichen3+1, s.length());
                schein.zeilen[i].ohrmarkennr = ohrmarkennr;
                schein.zeilen[i].gewicht = Float.parseFloat(gewicht);
            }                                                
            
            i++;
            
            if(i>40) {
                System.out.println("Zuviele Zeilen im Lieferschein!");
                break;
            }    
        }                    
        
        lieferscheine[lieferscheinnr] = schein;
        lieferscheinanzahl++;
        
        if(lieferscheinanzahl > 50) {
            System.out.println("Zuviele Lieferscheine!");
            ok = false;
        }
        
        return ok;        
    }            
    
    float durchschnittsgewicht(Landwirt landwirt) {
        float durchschnittsgewicht = 0;
        int durchläufe = 0;
        
        for(int i=0; i<lieferscheine.length; i++) {
            for(int k=0; k<lieferscheine[i].lieferscheinzeile.length; k++) {
                if(lieferscheine[i].lieferscheinzeile[k].kontrollnr == landwirt.kontrollnr) {
                    durchschnittsgewicht += lieferscheine[i].lieferscheinzeile[k].gewicht;
                    durchläufe++;
                }
            }
        }   
        
        durchschnittsgewicht /= durchläufe; // errechnen des durchschnitts
        
        return durchschnittsgewicht;
    }    
}

class lieferschein {
    lieferscheinzeile[] zeilen;
    
    lieferschein() {
        zeilen = new lieferscheinzeile[40];
    }    
}  

class lieferscheinzeile {
    String ohrmarkennr, kontrollnr;
    float gewicht;
}    

class Landwirt {
    String kontrollnr, name;
}    
    