Array

babuschka

Top Contributor
Hallo zusammen,

erstmal der Quelltext:

Java:
import IOulm.*;
import java.util.Formatter;

public class Wurfsumme{
   public static void main(String[] args) {
      int zahl1 = 0, zahl2 = 0, summe = 0;
      /*Array fuer alle Wurfsummen von 2 bis 12
      sumA[0] enthaelt Anzahl der Wurfsumme "2"
      sumA[1] enthaelt Anzahl der Wurfsumme "3"...*/
      int[] sumA = new int[11];
      Formatter myFmt = new Formatter(System.out);

      while (Urc.readInt()) {
         //Einlesen 1. Wurf
	 zahl1 = Urc.getInt();
	 //Einlesen 2. Wurf
	 if (Urc.readInt()) {
	    zahl2 = Urc.getInt();
	 } else {
	    System.err.println("Keine 2. Wurf angegeben.");
	    System.exit(1);
	 }

         //Fehlerueberpruefung
	 if (zahl1 < 1 || zahl1 > 6 || zahl2 < 1 || zahl2 > 6) {
	    System.err.println("Zahl nicht in Wertebereich");
	    System.exit(2);
         }
         //Wurfsumme bilden und abspeichern
	 summe = zahl1 + zahl2;
	 sumA[summe-2] = sumA[summe-2] + 1;
      }

      //Ausgabe:
      for (int i=0; i<sumA.length; i++) {
         myFmt.format("%2d: %4d\n", i+2, sumA[i]);
      }
   }
}


Nun zu meinen Probleme:

Ab der vorletzten Aktion bin ich total verunsichert:

[java=31]sumA[summe-2] = sumA[summe-2] + 1;[/code]

Was macht das PRogramm hier genau?
Ich versteh ja, dass der Array hier 11 Stellen hat von 0 bis 11 für die
Wurfsummen 2-12.
Nun wird von der Summe (bsp 11 (5 & 6)) 2 abgezogen und nach dem gleich Zeichen
wieder eins dazu addiert? Ist hiermit gemeint, dass die Anzahl des Arrays an der
9. Stelle um 1 erhöht wird?

Aber die neunte Stelle wäre hier die Wurfsumme 10 und nicht 11.

Was unten in der for-Schleife passiert ist mir ebenfalls SCHLEIERHAFT:

Was genau passiert in der for-Schleife?
Was hat das mit sumA-length auf sich?

Kann mir das jmd so richtig im Detail erklärn?Mit Worten.

Ich wär Dir, dem Antwortenden sehr dankbar!

Gruß Andy
 
Zuletzt bearbeitet von einem Moderator:
H

hüteüberhüte

Gast
Hallo! Bitte setze deinen Code doch in Java-Tags und formatiere, strukturiere und teile ihn doch vorher auch.
 

Bernd Hohmann

Top Contributor
Ab der vorletzten Aktion bin ich total verunsichert:

sumA[summe-2] = sumA[summe-2] + 1;

Was macht das PRogramm hier genau?

Es erhöht den Inhalt des Array an der Stelle [summe-2] um 1.

Offensichtlich wird hier ein Histogramm über die Augenverteilung der Würfe erstellt. Also Augensumme 5 wurde 8x geworfen, Augensumme 6 10x usw.

Die kleinste Augensumme ist 2 (1+1), da ein Array aber schon bei 0 anfängt zieht der Programmierer 2 ab und erhöht dann den Inhalt des Arrays an dieser Stelle um 1.

Nun wird von der Summe (bsp 11 (5 & 6)) 2 abgezogen und nach dem gleich Zeichen
wieder eins dazu addiert? Ist hiermit gemeint, dass die Anzahl des Arrays an der
9. Stelle um 1 erhöht wird?

Es wird der Inhalt an dieser Stelle um 1 erhöht.

Aber die neunte Stelle wäre hier die Wurfsumme 10 und nicht 11.

Was unten in der for-Schleife passiert ist mir ebenfalls SCHLEIERHAFT:

Was genau passiert in der for-Schleife?
Was hat das mit sumA-length auf sich?

array.length gibt die Anzahl der Elemente eines Arrays zurück. Vorne wurde das Array ja mit 11 Elementen erzeugt (" int[] sumA = new int[11];"), sumA.length wirft dann 11 aus.

Bei dem Format in der Schleife muss man sich mal mit der Formatter-Klasse auseinander gesetzt haben. Im Grunde wird da mit %2d ein Wert mit 2 Dezimalstellen, mit %4d ein Wert mit 4 Dezimalstellen ausgegeben (jeweils rechtsbündig mit Blanks davor). Übergeben an den Formatter wird dann i+2 (Rückrechnung auf die Augensumme) und dann die Anzahl der Würfe pro Augensumme aus dem Array.

Bernd
 

Pentalon

Bekanntes Mitglied
Hi vogte89

Hie eine grafische Darstellung des eindimensionalen Feldes sumA:

sumA 00|01|02|03|04|05|06|07|08|09|10
------------------------------------------
Wert 00|00|00|00|00|00|00|00|00|00|00

-----------------------^
Index

In diesen Speicherstellen steht am Anfang überall eine 0;

Dein Programm liesst 2 Zahlen ein, überprüft ob sie im Range sind, rechnet sie zusammen und nimmt das Ergebnis z.B. 5 als Index auf das Feld sumA. Da der Bereich von 2-12 geht muss 2 abgezogen werden, dass der Index auf das Feld sumA angewendet werden kann.
Mit diesem Index wird der Inhalt (Wert) des Feldes um 1 erhöht.
Java:
sumA[summe-2] = sumA[summe-2] + 1;
Das Programm zählt also die Häufigkeit der Würfelergebnisse.

Am Ende wird mit einer for Schleife das Feld mit seinen gesammelten Daten am Bildschirm ausgegeben.
Java:
myFmt.format("%2d: %4d\n", i+2, sumA[i]);
%2d bzw. %4d heisst, dass die Variable i+2 mit 2 Stellen und der Inhalt des Feldes sumA mit 4 Stellen ausgegeben werden soll. Damit erhält man eine schöne Formatierung der untereinander ausgedrucken Werte.

sumA 00|01|02|03|04|05|06|07|08|09|10
------------------------------------------
Wert 06|02|10|99|23|08|15|20|30|10|01

-----------------------^
Index


-2 ---6
-3 ---2
-4 --10
-5 --99
-6 --23
-7 ---8
-8 --15
-9 --20
10 --30
11 --10
12 ---1

Die - sollen die Spaces darstellen die durch die Formatierung erzeugt werden. Leider löscht das Forum überflüssige Spaces, desshalb hab ich das mit - aufgefüllt :)
Ohne diese Formatierung würde die Augabe so aussehen:
2 6
3 2
4 10
5 99
6 23
7 8
8 15
9 20
10 30
11 10
12 1

Dass das hier oben trotzdem nicht so toll aussieht, liegt daran, dass die Schriftart nicht monospace ist, aber ich hoffe Du verstehst trotzdem, was ich meine.

Pentalon
 
Zuletzt bearbeitet:

babuschka

Top Contributor
Hey Ihr 2,

vielen Dank. Ihr seid klasse. Mittlerweile ist einiges klarer!

Kann mir noch jemand mal so ganz allgemein erklärn,
Was eine Methode genau macht?
Ich hab schon verstanden, dass ich während der ganzen POrogrammiererei
mit Methoden "public static void main" arbeite-mir war das aber nciht bewusst
und ich tuh mich schwer,zu verstehen was dahinter steckt.

Gleiches gilt für die Objekte bzw. deren Orientierung.




Vielen Dank vorab,

Andy.
 
T

troll

Gast
eine methode ist in dem sinne eigentlich nur ein zusammengefasster block von weiteren calls ...
dabei kann man parameter übergeben und selbst was returnen ...

public static void main(String[]) ist der sog. programmeinstiegspunkt und damit der startpunkt einer jeden java-app .. diese wird von der VM gecallt und dann abgearbeitet ...
wird das ende von main() erreicht und es gibt keine non-deamon threads mehr die laufen ist das programm beendet ...

was OOP angeht sollte es gute bücher geben die es anfänger-freundlich genug erklären ....
 

Pentalon

Bekanntes Mitglied
Beim Programmieren geht es darum, ein komplexes Problem in kleine überschaubare Teilprobleme zu zerlegen.
So wie eine Firma die Notebooks erstellt. Diese Firma hat viel Abteilungen, die im Zusammenspiel die Notebookproduzierende Firma ausmachen. Je optimaler die Abteilungen zusammenarbeiten, desto effektiver funktioniert die Notebookproduktion.
Diese Abteilungen kannst Du Dir als die Klassen vorstellen.
In diesen Abteilungen gibt es Angestellte, die gewisse Bereiche dieser Abteilung übernehmen.
Das sind die Methoden. Sie haben ihren klar abgesteckten Arbeitsbereich und komunizieren mit anderen Methoden/Angestellten, die für ihre Arbeit von bedeutung sind.

Das die Klasse nur ein Bauplan ist würde ich hier ausser acht lassen :)

Ich hoffe diese Analogie hilft.
Pentalon
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Zeichenkette teilen mit Substring oder Char Array Java Basics - Anfänger-Themen 14
A 6. Element aus einem Array zurückgeben Java Basics - Anfänger-Themen 1
A Was bedeutet bei einem Array "int a [MAX][MAX];", Java Basics - Anfänger-Themen 7
T Array verkleinern Java Basics - Anfänger-Themen 2
J Array aus Numberfield Eingaben Java Basics - Anfänger-Themen 7
D Array List mit Objekten sortieren Java Basics - Anfänger-Themen 2
onlyxlia Anzahl Random Zahlen mit Scanner abfragen und in Array speichern Java Basics - Anfänger-Themen 10
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
Ü Zweidimensionales Array in der ersten Zeile deklarieren Java Basics - Anfänger-Themen 13
Thomas Uppe 2D Array Reihenfolge vermischen Java Basics - Anfänger-Themen 4
T array auslesen Java Basics - Anfänger-Themen 2
Nitrogames Variablen Variable aus JOptionPane Abfrage in Array einfügen Java Basics - Anfänger-Themen 4
moini Auf Array aus Superklasse zugreifen? Java Basics - Anfänger-Themen 2
J ArrayList in 2D-Array konvertieren. Java Basics - Anfänger-Themen 48
M NullPointerException: Cannot read the array length because "this.Kinder" is null Java Basics - Anfänger-Themen 1
P Wieso kann ich als Index für einen Array einen Char angeben? Java Basics - Anfänger-Themen 3
Finn_lol Fehlermeldung bei Schleife mit Array Java Basics - Anfänger-Themen 4
Proxy Chars vor array übergabe toLowerUpcase Java Basics - Anfänger-Themen 14
iAmFaiinez Primzahlen Tester ohne Array Java Basics - Anfänger-Themen 4
S array 2 dimensional treppe Java Basics - Anfänger-Themen 3
S Array 2x2 Blöcke mit 0 und 1 Java Basics - Anfänger-Themen 10
C Array von Klassen Java Basics - Anfänger-Themen 2
julian0507 2Dim-Array Spaltensummen Java Basics - Anfänger-Themen 1
XWing Doppelte Zahlen im Array Java Basics - Anfänger-Themen 8
melisax Java 2D-Array Tabelle Java Basics - Anfänger-Themen 4
melisax Java Array Wert an bestimmtem Index angeben Java Basics - Anfänger-Themen 14
W Items löschen aus String Array vom Custom Base Adapter Java Basics - Anfänger-Themen 2
Proxy Stack erweitern mit neuem Array falls der alte voll ist!? Java Basics - Anfänger-Themen 5
E Array, nächste Zahl zur 5 ausgeben, wie? Java Basics - Anfänger-Themen 42
J Array.list vergleichen Java Basics - Anfänger-Themen 1
W Java-Code mit Array Java Basics - Anfänger-Themen 14
D Reflections & Generisches Array Java Basics - Anfänger-Themen 4
T Array Java Basics - Anfänger-Themen 2
T Array Java Basics - Anfänger-Themen 15
T Wörteranzahl im Array zählen Java Basics - Anfänger-Themen 9
Ostkreuz Zweidimensionaler Array Index Java Basics - Anfänger-Themen 2
S String Array Buchstaben um einen gewissen Wert verschieben Java Basics - Anfänger-Themen 4
R Images aus einem Array ausgeben Java Basics - Anfänger-Themen 3
R 2d Array individuell machen Java Basics - Anfänger-Themen 4
D 2D Char Array into String Java Basics - Anfänger-Themen 2
J Array Median bestimmen Java Basics - Anfänger-Themen 6
S Array Maximum bestimmen mit for und foreach Java Basics - Anfänger-Themen 7
S Prüfen ob ein zweidimensionales Array rechteckig ist Java Basics - Anfänger-Themen 4
N Array Java Basics - Anfänger-Themen 1
J Array Mittleren Wert bestimmen Java Basics - Anfänger-Themen 2
D OOP Array einem Objekt zuweisen Java Basics - Anfänger-Themen 2
O Zahlen aus einem char-array per char + Zeichen addieren Java Basics - Anfänger-Themen 2
S leeres Array statt Null Pointer Exception ausgeben Java Basics - Anfänger-Themen 20
S Inhalte aus Array vergleichen und Max ausgeben Java Basics - Anfänger-Themen 3
M 2d array ohne längen anlegen Java Basics - Anfänger-Themen 4
S Bestimmte werte aus einem Array löschen Java Basics - Anfänger-Themen 2
S Ausgeben wie oft ein Wert in einem Array vorkommt Java Basics - Anfänger-Themen 7
E Reihenfolge der Werte umdrehen (mittels statischem int-Array Java Basics - Anfänger-Themen 3
O 2 Dimensionales Array Java Basics - Anfänger-Themen 6
M Bubble Sort - Int[] Array sortieren Java Basics - Anfänger-Themen 2
javaBoon86 Array mehrere Dimensionen Java Basics - Anfänger-Themen 10
B Array nach Elementwerten sortieren? Java Basics - Anfänger-Themen 1
B Explizit Array definieren geht nicht? Java Basics - Anfänger-Themen 14
D Kleinste Zahl in Array finden die vorher noch errechnet werden müssen. Java Basics - Anfänger-Themen 4
L Gegebenes Array sortieren, indem zufällige Zahlenpaare aus Array ausgewählt werden Java Basics - Anfänger-Themen 14
Say 2-DIM Array Code lesen und verstehen Java Basics - Anfänger-Themen 5
N Array beim erstellen mit Werten füllen Java Basics - Anfänger-Themen 6
C Java Array Struktur, welche ist wann besser? Java Basics - Anfänger-Themen 12
Temsky34 Array IndexOf nicht verfügbar Java Basics - Anfänger-Themen 18
belana wie am besten 2D Array von String to Integer Java Basics - Anfänger-Themen 18
S Array mit Methode löschen Java Basics - Anfänger-Themen 2
J Java To String Methode, Array mit For-Schleife Java Basics - Anfänger-Themen 2
E Durch Muster in Array iterieren Java Basics - Anfänger-Themen 3
L Frage zum Array Java Basics - Anfänger-Themen 1
C 2D Array Ausgabe mit for-Schleife i,j Java Basics - Anfänger-Themen 4
D Methode: Array Reihenfolge tauschen Java Basics - Anfänger-Themen 3
julian0507 Array aus Methode in anderer Methode sichtbar machen Java Basics - Anfänger-Themen 10
P Array vom Typ Klasse Java Basics - Anfänger-Themen 18
Lion.King Array deklarieren und initialisieren Java Basics - Anfänger-Themen 5
P Array-Objekte-Aufruf Java Basics - Anfänger-Themen 22
A CSv.Datei einlesen und die werte in zweidemosional Int Array speichern Java Basics - Anfänger-Themen 9
M Methoden Zweidimensionaler Array mit Setter Methode ändern Java Basics - Anfänger-Themen 4
AkiJou Zeile in 2d Array löschen Java Basics - Anfänger-Themen 2
LilliCherry Array in einer Zeile ausgeben Java Basics - Anfänger-Themen 6
A Elemente in einem Array Java Basics - Anfänger-Themen 5
A Vorkommende Farben ermittel und als Array zurückgeben Java Basics - Anfänger-Themen 7
AhmadSlack Array Java Basics - Anfänger-Themen 7
Jambolo Kartenhand Array Java Basics - Anfänger-Themen 14
ravenz Schleife mit for über String Array „zahlen“und prüfen ob Wert „a“ oder „b“ oder „c“ entspricht (mittels || ) Java Basics - Anfänger-Themen 4
S Eine Variable in einem Array speichern Java Basics - Anfänger-Themen 5
T Methode, die prüft ob in einem Int-Array maximal 2 Zahlen enthalten sind, die größer als ihr Vorgänger sind Java Basics - Anfänger-Themen 5
T String Array Fehler beim Index Java Basics - Anfänger-Themen 3
krgewb byte-Array, das ein Bild repräsentiert Java Basics - Anfänger-Themen 1
1 Array rekursiv durchlaufen Java Basics - Anfänger-Themen 8
I Methoden Wieso wird mein Array "a" verändert und meine Variable "a" nicht? Java Basics - Anfänger-Themen 4
EykS 3D Druckdatei basierend auf 3D Array? Java Basics - Anfänger-Themen 3
sserio Array funktioniert nicht Java Basics - Anfänger-Themen 2
sserio Iterierung über ein zweidimensionales Array Java Basics - Anfänger-Themen 16
sserio Zweidimensionales Array [][] wird untereinander ausgegeben Java Basics - Anfänger-Themen 14
Chris.089 2 Werte im Array tauschen Java Basics - Anfänger-Themen 6
D EinMalEins mithilfe einer for-Schleife und Array Java Basics - Anfänger-Themen 1
L Unbekanntes Problem mit 2d Array Java Basics - Anfänger-Themen 6
L Gridmuster in einem Array Java Basics - Anfänger-Themen 2
sgtcoopa Array übergeben Schleife Java Basics - Anfänger-Themen 0
B Compiler-Fehler Array aus Objekten übergeben Java Basics - Anfänger-Themen 7

Ähnliche Java Themen


Oben