JAVA Array Funktion, Versteh ich nicht

Status
Für weitere Antworten geschlossen.

koak

Newbie
Registriert
Juni 2010
Beiträge
7
Hallo,
ich bin neu im Forum und habe ein Problem.

Schreibe morgen meine Abschlussprüfung zum Thema JAVA.
Wir müssen wahrscheinlich ein Programm schreiben, welches eine Dezimalzahl in eine Binärzahl umrechnet.
Dazu müssen wir die Funktion Array verwenden.

Kann ja mal das Struktugramm beschreiben:
________________________________
Deklaration der Var.
bin [20], dez, i
________________________________
Array löschen
________________________________
dez <- 34, i <- 0
________________________________
dez != 0
__________________________
....| bin <- dez % 2
....|__________________________
....|dez <- dez / 2
....|__________________________
....|i ++
__|__________________________
von i <- 19 bis 0
___________________________
.....|Ausgabe: bin
.....|__________________________

Der Sinn liegt darin, dass man eine Dezimalzahl hat (z.B. 34). Diese wird dann durch 2 geteilt: Man erhält 17 und Rest 0
Es würde dann wie folgt aussehen:

34/2 = 17, Rest 0
17/2 = 8, Rest 1
8 / 2 = 4, Rest 0
4 / 2 = 2, Rest 0
2 / 2 = 1, Rest 0
1 / 2 = 0, Rest 1

Binärzahl: 100010

Mein Problem ist, dass ich keine Ahnung haben wie das Array funktioniert und was die Variable "bin []" zu bedeuten hat.

Wenn ihr iwelche Fragen zum Verständnis habt: Bitte fragen!

Vielen lieben Dank im Voraus
 
Morgen? Ziemlich spät um zu lernen oder?

Am besten du nimmst dir mal die Java Insel her, und schaust dir den Array Teil genau an. Dann wirst du auch verstehen was die eckigen Klammern bedeuten. Hier der Link: http://openbook.galileocomputing.de...03_010.htm#mj198541638074949eac33530a0d77982d

Aber ein bisschen komisch ist es schon, Abschlussprüfung in Java und du kannst Arrays nicht? Welche Art Abschluss ist das denn? Weil nach Arrays kommen noch viele viele wichtige Dinge, zb. Listen, Maps, Exceptions usw.
 
Also ich weiss nicht, ob wir diejenigen sind die hier Fragen zum Verständnis haben sollten ...

Dein Struktogramm beschreibt das ganze eh sehr gut, wo ist genau dein Verständnisproblem? Weisst du was ein Array ist? Weisst du was das Struktogramm dir mit bin sagen will?
 
bin[20] ist das array. hier wird es mit der Größe 20 angelegt.
Ein Array ist im grunde nichts anderes als eine Reihe von Zahlen (oder anderen Objekten), auf die du durch einen Index zugreifen kannst.
Mal ein Beispiel:
du Möchtest eine Reihe von integer Werten abspeichern (z.B. die Nullen und Einsen deiner Biärzahl)
Dann kannst du ein integer Array mit der gewünschten Grüße anlegen:
int[] bin = new int[20];

hier kannst du jetzt unter jedem index (von 0 bis 19) einen wert abspeichern. Insgesamt 20 Werte also.
Werte "reinstecken" machst du durch:
bin[0] = 1; //setzt den wert bei index 0 auf 1
bin[1] = 0; // setzt den wert bei index 1 auf 0
bin[2] = 1; // setzt den wert bei index 3 auf 1
.....

und genauso kannst du auch werte wieder abrufen
int x = bin[2];
 
Naja, bin[] ist ja dein Array. Da werden immer diese Reste der Division hinzugefügt.
Am Ende soll einfach nur der ganze Inhalt ausgegeben werden (am besten rückwärts, damit's stimmt).

*Edit: Ich bin immer etwas langsam...
 
hab dir eine .pdf angehängt die wir damals im info unterricht bekommen haben, vl wirds dir dann ein bisschen klarer

edit: habt ihr die modulo funktion schon gelernt?
 

Anhänge

  • Java5_Array.pdf
    119,2 KB · Aufrufe: 519
Danke für eure schnellen Antworten.
Habe hier das Programm:
public class Binärzahlumrechnung_nurHauptpr {

public static void main(String[] args) {

int dez, i;
// Deklaration des array
int [] bin = new int [20];

// Array loeschen -> Array mit Nullen fuellen
for (i=0; i<19; i++){
bin = 0;
}

// Variable initialisieren
dez = 34;
i = 0;

// In einer Schleife die jeweiligen Reste ermitteln
while (dez != 0) {
bin = dez % 2;
dez = dez / 2;
i++;
}

// Berechnete Dualziffern aufgeben
// (in umgekehrter Reihenfolge)
for (i =19; i>=0; i--){
System.out.println(bin);
}

}
}

so korrekt?
Nochmal zum Struktugram: Was bedeutet das dez % 2?
Wenn ich also ein Array "aktivieren" möchte schreibe ich immer:
int[]array(hier bin) = new int [Zahl]?

Um das Programm zu verstehen:
1. Ich gebe dem Programm vor, wie viele "Blöcke" das Array hat (hier 20)
2. Ich setze Array auf 0, indem ich sage, dass er von 0 bis 20 durchzählen soll?
3. Ich deklariere dez und i
4. Verarbeitung mit der while-schleife bis "i" ungleich 0
5. Zähle mit Hilfe der for-schleife von 19 abwärts und gebe alles aus

Verstehe ich das richtig?
 
1. Ja
2. Du gehst durch das ganze Array und setzt jedes Element auf 0.
3. Ja
4. Ja
5. Ja

Das "%" in "dez % 2" heißt einfach nur modulo, also der Rest, der bei der Division entsteht.

Es ist sogar lauffähig.
 
Zuletzt bearbeitet: ("Element", nicht "Feld")
Ist das also so ein fester Ausdruck "variable % 2"?
Nochmal ne Frage zu der Klammer [].
Warum steht das "i" in der eckigen Klammer (bin = 0)? Ich dachte der Ausdruck (hier 20) muss da rein.
 
Nein, % ist einfach nur ein Operator.
"n % m" heißt "n modulo m", also n wird durch m dividiert und davon der Rest aus/zurückgegeben.

bin: Hier bezeichnet i das i-te Element im Array. Es fängt bei 0 an.
Code:
i = 0;
while (irgendeine Bedingung) {
bin [i] = irgendeine Operation;
i++;
}
Du setzt i auf 0, d.h. bin zeigt auf das 0te Element im Array. Damit machst du irgendwas und inkrementierst i (mit i++;).
i wird also zu 1 und beim nächsten Schleifendurchlauf zeigt bin dann auf das 1te Element im Array.
 
Also ist "i" quasi meine variable, welche immer wieder geteilt wird?
Hier:
Erst die 34, dann 17, dann 8 usw...??
 
Deine Variable, die geteilt wird, ist "dez".
"i" ist die Position im Array, in die das Ergebnis dieser Division geschrieben wird.
 
ahh versteh.
Durch das i++ geht er dann immer eine Stelle weiter?
 
Ja genau. Solange bis "dez" nicht 0 ist.
Denn wenn dez = 0 ist er ja schon fertig und das Ergebnis steht dann im Array.
 
OK.
vielen dank für die Hilfe :)
Ich werde das Programm jetzt nochmal durchgehen und wenn fragen aufkommen werde ich es posten

Vielen vielen Dank
 
und verwenden dann bitte den code tag, das macht die fehler suche ums vielfache einfacher
 
Um nochmal zusammen zu fasse:
i = position im array
bin = array
dez = Restwert
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben