import java.awt.List;
import java.io.BufferedReader;
import java.io.File;
import java.awt.List;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.StringTokenizer;
import java.util.Vector;

public class GestAlter {

	public int gewichtsPerzentile(int gestAlter, int geschlechtK,
			int ANZMEHRLINGE, int kg) {

		boolean istMaennlich;
		if (geschlechtK == 2)
			istMaennlich = false;
		else 	
			istMaennlich = true;

		int istEinling;
		if (ANZMEHRLINGE == 1)
			istEinling = 1;
		else if (ANZMEHRLINGE > 1)
			istEinling = 2;
		else
			istEinling = -1;
					

		Vector<int[]> listeKomplett = ladeVonDatei();

		int gewichtsPerzentile = 9;
		int pos = 0;
		for (int i = 0; i < listeKomplett.size(); i++) {
			
			int[] aktuelleZeile = listeKomplett.get(i);
						
			int gestAlterInWochenListe = aktuelleZeile[0];
			int geschlechtkListe = aktuelleZeile[3];
			int zwillingeListe = aktuelleZeile[4];
			int gewichtInKgMinListe = aktuelleZeile[1];
			int gewichtInKgMaxListe = aktuelleZeile[2];

			if (gestAlter == gestAlterInWochenListe && geschlechtK == geschlechtkListe
					&& istEinling == zwillingeListe){
				if (kg < gewichtInKgMinListe)
					return 1;
				else if (kg > gewichtInKgMaxListe)
					return 2;
				else
					return 0; 
			}	
		}
		
		return 9;
	}

	private Vector<int[]> ladeVonDatei() {

		Vector<int[]> list = new Vector<int[]>();
		
		try {	
			File file = new File("daten.csv");
			BufferedReader bufRdr;
			bufRdr = new BufferedReader(new FileReader(file));

			String line = null;			
			int col = 0;

			// jede Zeile wird gelesen
			while ((line = bufRdr.readLine()) != null) {
				StringTokenizer st = new StringTokenizer(line, ";");
				int[] aktuelleZeile = new int[5];
				while (st.hasMoreTokens()) {
					//  nächstes token und in array einfügen		
					aktuelleZeile[col] = Integer.parseInt(st.nextToken());					
					col++;
				}
				list.add(aktuelleZeile);
				col = 0;
			}
			// Datei schließen
			bufRdr.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} catch(Exception ex){
			ex.printStackTrace();
		}

		return list;
	}

}
________________________________________________________________________________________________________
__________________________________________________________________TESTKLASSE_____________________________
_________________________________________________________________________________________________________

import junit.framework.Assert;
import junit.framework.TestCase;


public class GestAlterTest extends TestCase {
	
	/********************* Weiblich Zwilling****************************/

	public void testWeiblichMehrling(){
		GestAlter gestAlter = new GestAlter();
		int fehler = gestAlter.gewichtsPerzentile(23, 2, 5, 500);
		Assert.assertEquals(0, fehler);
	}
	
	
	
	public void testWeiblichZwillingNormal(){
		GestAlter gestAlter = new GestAlter();
		int fehler = gestAlter.gewichtsPerzentile(23, 2, 2, 500);
		Assert.assertEquals(0, fehler);
	}
	
	public void testWeiblichZwillingUntergewichtig(){
		GestAlter gestAlter = new GestAlter();
		int fehler = gestAlter.gewichtsPerzentile(23, 2, 2, 399);
		Assert.assertEquals(1, fehler);
	}
	
	public void testWeiblichZwillingUebergewichtig(){
		GestAlter gestAlter = new GestAlter();
		int fehler = gestAlter.gewichtsPerzentile(23, 2, 2, 721);
		Assert.assertEquals(2, fehler);
	}
	
	
	public void testWeiblichZwillingExistiertNicht(){
		GestAlter gestAlter = new GestAlter();
		int fehler = gestAlter.gewichtsPerzentile(44, 2, 2, 721);
		Assert.assertEquals(9, fehler);
	} 
	
	/********************* Weiblich Einlinge****************************/ 
	

	public void testWeiblichEinlingNormal(){
		GestAlter gestAlter = new GestAlter();
		int fehler = gestAlter.gewichtsPerzentile(40, 2, 1, 4000);
		Assert.assertEquals(0, fehler);
	}
	
	public void testWeiblichEinlingUntergewichtig(){
		GestAlter gestAlter = new GestAlter();
		int fehler = gestAlter.gewichtsPerzentile(40, 2, 1, 2600);
		Assert.assertEquals(1, fehler);
	}
	
	public void testWeiblichEinlingUebergewichtig(){
		GestAlter gestAlter = new GestAlter();
		int fehler = gestAlter.gewichtsPerzentile(40, 2, 1, 4281);
		Assert.assertEquals(2, fehler);
	}
	
	public void testWeiblichEinlingExistiertNicht(){
		GestAlter gestAlter = new GestAlter();
		int fehler = gestAlter.gewichtsPerzentile(22, 2, 1, 721);
		Assert.assertEquals(9, fehler);
	}
	
	/********************* Männlich Zwilling****************************/
	
	public void testMaennlichMehrlinge(){
		GestAlter gestAlter = new GestAlter();
		int fehler = gestAlter.gewichtsPerzentile(35, 1, 5, 2000);
		Assert.assertEquals(0, fehler);
	}
	
	public void testMaennlichZwillingNormal(){
		GestAlter gestAlter = new GestAlter();
		int fehler = gestAlter.gewichtsPerzentile(35, 1, 2, 2000);
		Assert.assertEquals(0, fehler);
	}
	
	public void testMaennlichZwillingUntergewichtig(){
		GestAlter gestAlter = new GestAlter();
		int fehler = gestAlter.gewichtsPerzentile(35, 1, 2, 1649);
		Assert.assertEquals(1, fehler);
	}
	
	public void testMaennlichZwillingUebergewichtig(){
		GestAlter gestAlter = new GestAlter();
		int fehler = gestAlter.gewichtsPerzentile(35, 1, 2, 3021);
		Assert.assertEquals(2, fehler);
	}
	
	public void testMaennlichZwillingExistiertNicht(){
		GestAlter gestAlter = new GestAlter();
		int fehler = gestAlter.gewichtsPerzentile(43, 1, 2, 721);
		Assert.assertEquals(9, fehler);
	}
	
	
	
	
	/********************* Männlich Einlinge****************************/ 
	
	public void testMaennlichEinlingNormal(){
		GestAlter gestAlter = new GestAlter();
		int fehler = gestAlter.gewichtsPerzentile(25, 1, 1, 800);
		Assert.assertEquals(0, fehler);
	}
	
	public void testMaennlichEinlingUntergewichtig(){
		GestAlter gestAlter = new GestAlter();
		int fehler = gestAlter.gewichtsPerzentile(25, 1, 1, 500);
		Assert.assertEquals(1, fehler);
	}
	
	
	public void testMaennlichEinlingUebergewichtig(){
		GestAlter gestAlter = new GestAlter();
		int fehler = gestAlter.gewichtsPerzentile(25, 1, 1,1031 );
		Assert.assertEquals(2, fehler);
	} 
	
	public void testMaennlichEinlingExistiertNicht(){
		GestAlter gestAlter = new GestAlter();
		int fehler = gestAlter.gewichtsPerzentile(1, 1, 1, 721);
		Assert.assertEquals(9, fehler);
	}
	
	public void test(){
		GestAlter gestAlter = new GestAlter();
		int fehler = gestAlter.gewichtsPerzentile(-1, 1, 1, 721);
		Assert.assertEquals(9, fehler);
	}
	

	/**************** Zusätzlich ***********************/
	
	protected void setUp() throws Exception {
		super.setUp();
	}

	protected void tearDown() throws Exception {
		super.tearDown();
	}

}



