All pastes #799051 Raw Edit

Something

public text v1 · immutable
#799051 ·published 2007-11-27 07:48 UTC
rendered paste body

public class Tossuelain extends Alkuelain{
	private char sukupuoli;
	private String spuoli;
	
	public Tossuelain(){ //luo tohvelieläimen, jolle arvotaan perimä.
		//super(); ??
		this.YKSILOLLISYYS = otuslaskuri;
		++Alkuelain.otuslaskuri;
		this.perima = new char[ perimanKoko];
		this.sukupuoli = perusemas[(int) Math.random()*4];
		for (int i=0; i < this.perima.length; ++i){
			this.perima[i] = perusemas[(int) Math.random()*4];
		}
	}
	public Tossuelain(char[] perimaAnnettu){ //luo tohvelieläimen annetulla perimällä. Ottaa sisäänsä 31-alkioisen taulukon ja määrää siitä viimeisen alkion sukupuoleksi.
		this.YKSILOLLISYYS = otuslaskuri;
		++Alkuelain.otuslaskuri;
		this.perima = new char[ perimanKoko];
		for (int i=0; i < perimaAnnettu.length; ++i){
			if (perimaAnnettu[i] != 'A' || perimaAnnettu[i] != 'C' || perimaAnnettu[i] != 'G' || perimaAnnettu[i] != 'T')
		        perimaAnnettu[i] = perusemas[(int) Math.random()*4];
		}
		this.sukupuoli = perimaAnnettu[perimaAnnettu.length-1];
		for (int i=0; i < this.perima.length; ++i){
			this.perima[i] = perimaAnnettu[i];
		}
	}
			
	public Tossuelain pariudu(Tossuelain toinen) {  //palauttaa arvonaan joko jälkeläisen tai arvon null.
		char[] parit = new char[perimanKoko+1];
		for (int i=0; i < parit.length-1; ++i){
			if (Math.random()<0.5)
				parit[i] = toinen.perima[i];
			else
				parit[i] = this.perima[i];
		}
		if (this.sukupuoli == 'A') {
			if (toinen.sukupuoli == 'G')
				parit[parit.length-1]= 'A';
				else if (toinen.sukupuoli == 'T') 
					parit[parit.length-1] = 'C';
			return new Tossuelain(parit);
		}
		if (this.sukupuoli == 'C') {
			if (toinen.sukupuoli == 'G')
				parit[parit.length-1]= 'G';
				else if (toinen.sukupuoli == 'T') 
					parit[parit.length-1] = 'T';
			return new Tossuelain(parit);
		}
		if (this.sukupuoli == 'T') {
			if (toinen.sukupuoli == 'A')
				parit[parit.length-1]= 'C';
				else if (toinen.sukupuoli == 'C') 
					parit[parit.length-1] = 'T';
			return new Tossuelain(parit);
		}
		if (this.sukupuoli == 'G') {
			if (toinen.sukupuoli == 'C')
				parit[parit.length-1]= 'G';
				else if (toinen.sukupuoli == 'A') 
					parit[parit.length-1] = 'A';
			return new Tossuelain(parit);
		}
		
		if (parit[parit.length-1]!= 'A' || parit[parit.length-1]!= 'C'|| parit[parit.length-1]!= 'G' || parit[parit.length-1]!= 'T'){
			return null; //tarvitseekohan mainita edes edellisten iffittelyiden jälkeen?
		}	
		
    }
    public char vaihdaNukleotidi(int indeksi, char uusi) { //vaihtaa tossueläimen yhden nukleotidin toiseksi kohdasta indeksi. Arvonaan metodi palauttaa vanhan, korvatun nukleotidin. Määrittele, mitä tehdään, jos parametrit ovat virheellisiä.
    	if (indeksi > this.perima.length) //pidetään indeksi sallituissa rajoissa
    		indeksi = this.perima.length;
    		else if (indeksi < 0)
    			indeksi = 0;
    	if (indeksi == this.perima.length){//if int indeksi == 30 ...muuttaa sukupuolinukleotidiä.
    		//char vanha = this.sukupuoli; toimiiko?
    		this.sukupuoli = uusi;}
    		else{ 
    			//char vanha = this.perima[indeksi];
    			this.perima[indeksi] = uusi;}
    	return //vanha; pitäisi keksiä miten saisi järkevästi palautettua vanhan arvon 
    }
    public String toString() { //muodostaa selkeän merkkiesityksen tossueläimestä. 
    	if ((this.sukupuoli == 'A') || (this.sukupuoli == 'C')) // A- ja C-tossut naaraita, G- ja T-tossut koiraita
    		spuoli = "naaras";
    	else if ((this.sukupuoli == 'G') || (this.sukupuoli == 'T'))
    		spuoli = "koiras";
    	return "Tohvelieläin "+this.YKSILOLLISYYS+".: "+this.perimalista+this.sukupuoli+" "+this.spuoli;
    }
	
}