public class Population {
public static void main(String[] args) {
boolean[] population = new boolean[80];
// zufaelliges Startarry erzeugen
for (int i = 0; i < population.length; i++) {
if (Math.random() < 0.5)
population[i] = true;
}
int regel, jahre;
/*Verlangen der Eingaben*/
do{
regel=IO.readInt("Bitte eine Zahl eingeben:");
}
while(regel<=0 || regel >255);
do{
jahre=IO.readInt("Bitte die Anzahl der Jahre eingeben:");
}
while(jahre <=0);
/*Umrechnen der eingegeben Dizimalzahl in Binaercode*/
while (regel !=0)
{
if (regel%2 == 0) IO.print('0');
else IO.print('1');
regel=regel/2;
}
}
}
Der unten stehende Algorithmus wandelt die vom Benutzer eingegebene Zahl in den zugehörigen Binörcode um. Allerdings soll dieser Code nicht (wie zu testzwecken gemacht) ausgegeben werden, sondern in einem Boolean Array der Länge 8 gespeichert werden.....
Nun ist meine Frage wie ich das hinbekomme? Ist vermutlich total simpel, aber momentan habe ich wohl ein Brett vorm Kopf ;-)
Danke
Einfach überall da, wo jetzt "IO.print"... steht muss Code zum in den Array schreiben hin. Du musst also ein Array anlegen, dann zählen, bei welcher Stelle du gerade bist und da reinschreiben.
/******************************Population .java********************************/
import AlgoTools.IO;
/**
* Eine Folge von Elementen kann
* entweder # (lebend) oder _ (tot) sein. Die Uebergangsregel wird in einem
* Byte codiert. Nach dieser Regel entscheidet jedes Element unter Berueck-
* sichtigung seiner Nachbarn, ob es seinen Zustand wechselt. Fuer ein Element
* und seine beiden Nachbarn gibt es acht moegliche Zustaende:
* 000 001 010 011 100 101 110 111
* In einem Byte wird die Uebergangsregel in dieser Reihenfolge codiert.
* Z.B. fuer 42 --> 0 0 1 0 1 0 1 0
* Index: 0 1 2 3 4 5 6 7
* ___ __# _#_ _## #__ #_# ##_ ###
* 000 001 010 011 100 101 110 111
* | | | | | | | |
* 0 1 0 1 0 1 0 0
* | | | | | | | |
* ___ _## ___ _## #__ ### #__ #_#
* D.h. also z.B. wenn ein Element # ist und die beiden Nachbarn
* auch, ist der Folgezustand _. (111 -> 0)
*
* In dem Programm kann die Nummer der Uebergangsregel eingegeben werden. Sie
* wird in ein Boolean-Array ueberfuehrt. Dann wird fuer eine angegebende Anzahl
* von Schritten die Regel auf ein Start-Array angewendet und jeder
* Schrittausgegeben.
*
*
* @version 11.11.2008
*
*/
public class Population {
public static void main(String[] args) {
boolean[] population = new boolean[80];
// zufaelliges Startarry erzeugen
for (int i = 0; i < population.length; i++) {
if (Math.random() < 0.5)
population[i] = true;
}
int eingabe, jahre;
//eingabe=regel
/*Verlangen der Eingaben*/
do{
eingabe=IO.readInt("Bitte eine Zahl eingeben:");
}
while(eingabe <=0 || eingabe >255);
do{
jahre=IO.readInt("Bitte die Anzahl der Jahre eingeben:");
}
while(jahre <=0);
/*Umrechnen der eingegeben Zahl in Binaecodr\Schreiben ins Array*/
boolean[] regel = new boolean [8];
for(int j =0; j<regel.length; j++)
{
while (eingabe !=0)
{
if (eingabe%2 == 0) regel[j] = false;
else regel[j] = true;
eingabe=eingabe/2;
}
}
IO.print(j, 5);
}
}
Wie kann ich mir denn nun das Array ausgeben lassen um zu sehen, ob alles richtig läuft?
Einfach System.out.print(j); funzt nit.......
/******************************Population .java********************************/
import AlgoTools.IO;
/**
* Eine Folge von Elementen kann
* entweder # (lebend) oder _ (tot) sein. Die Uebergangsregel wird in einem
* Byte codiert. Nach dieser Regel entscheidet jedes Element unter Berueck-
* sichtigung seiner Nachbarn, ob es seinen Zustand wechselt. Fuer ein Element
* und seine beiden Nachbarn gibt es acht moegliche Zustaende:
* 000 001 010 011 100 101 110 111
* In einem Byte wird die Uebergangsregel in dieser Reihenfolge codiert.
* Z.B. fuer 42 --> 0 0 1 0 1 0 1 0
* Index: 0 1 2 3 4 5 6 7
* ___ __# _#_ _## #__ #_# ##_ ###
* 000 001 010 011 100 101 110 111
* | | | | | | | |
* 0 1 0 1 0 1 0 0
* | | | | | | | |
* ___ _## ___ _## #__ ### #__ #_#
* D.h. also z.B. wenn ein Element # ist und die beiden Nachbarn
* auch, ist der Folgezustand _. (111 -> 0)
*
* In dem Programm kann die Nummer der Uebergangsregel eingegeben werden. Sie
* wird in ein Boolean-Array ueberfuehrt. Dann wird fuer eine angegebende Anzahl
* von Schritten die Regel auf ein Start-Array angewendet und jeder
* Schrittausgegeben.
*
*
* @version 11.11.2008
*
*/
public class Population {
public static void main(String[] args) {
boolean[] population = new boolean[80];
// zufaelliges Startarry erzeugen
for (int i = 0; i < population.length; i++) {
if (Math.random() < 0.5)
population[i] = true;
}
int eingabe, jahre;
//eingabe=regel
/*Verlangen der Eingaben*/
do{
eingabe=IO.readInt("Bitte eine Zahl eingeben:");
}
while(eingabe <=0 || eingabe >255);
do{
jahre=IO.readInt("Bitte die Anzahl der Jahre eingeben:");
}
while(jahre <=0);
/*Umrechnen der eingegeben Zahl in Binaecodr\Schreiben ins Array*/
boolean[] regel = new boolean [8];
for(int j =0; j<regel.length; j++)
{
while (eingabe !=0)
{
if (eingabe%2 == 0) regel[j] = false;
else regel[j] = true;
eingabe=eingabe/2;
}
IO.print(regel[j], 5);
}
}
}
so, allerdings funzt das noch nicht so ganz....ich möchte den binärcode im boolean array haben, 0 entspreicht "false" und 1 entspricht "true"! wenn ich mir das ausgeben lasse kommt allerdings einmal true und danach 7 mal false....:-(
wo liegt der fehler?
danke