Anfängerfrage zu array(-Syntax)

Status
Nicht offen für weitere Antworten.

YadaDude

Mitglied
Hallo, ich versuche mich gerade etwas in Java einzuarbeiten und bei den Array-Aufgaben fehlt mir noch komplett der Durchblick, also ich bin absolut überfordert.

Wie immer in einem solchen Fall versuche ich das grundlegende Problem so primitiv wie möglich anzuschauen (wie hier auch empfohlen... K K B P oder so? kleines kompilierbares Beispielprogramm?).

Jedoch versagt es dabei schon...;(

Hier habe ich also die beiden geschriebenen Klassen, wobei ein Coding eine Wrapperklasse für die Main-methode darstellt...

Ich denke einfach, dass irgendwo im absolut grundlegenden Verständnis etwas fehlt bei mir, was jemand mit etwas Ahnung jedoch sofort sieht und nur mit dem Kopf schüttelt, daher bitte ich hiermit mal um Hilfe :/

Anbei die Codes:


Java:
public class Arrays
{
 int i;
 int array[] = new int[i];
 
 public void setArraylaenge(int i)
 {
  this.i = i;
 }

}

Java:
public class ArraysTest
{
  public static void main(String[] args)
  {
    Arrays a1 = new Arrays();
    
    a1.setArraylaenge(5);
    
    System.out.println(array.length);
  }
}
 

Schandro

Top Contributor
In der Klasse Arrays:
Es gibt 2 Membervariablen:
i
array

Da sie Membervariablen sind, werden beide beim instanzieren des Objectes initialisiert. Mit anderen Worten:
Java:
Arrays a1 = new Arrays();
An dieser Stelle wird den beiden Membervariablen von "a1" jeweils ihr erster Wert zugewiesen, in dem Fall:
i = 0 // 0 ist der default-Wert für int's
array = new int // da i zu diesen Zeitpunkt 0 ist, ich auch die Länge des Arrays 0

=> Das Array wird mit der Größe 0 erstellt. Wenn du später (innerhalb der Methode "setArraylaenge") die Membervariable "i" änderst, hat das keinerlei Auswirkungen auf die Membervariable "array".


Grundlegend stellt sich nur die Frage, was eine Wrapper-Methode für ein Array bringen soll? Falls du versuchtst, ein Array mit veränderbarer Länge herzustellen: Sowas nennt sich "Collection" und es gibt in der Java API mind. 10 verschiedene Klassen, die auf unterschiedlichste Art und Weise eine solche Collection sind. Um ein Array mit dynamischer Länge nachzubilden, bietet sich "ArrayList" an.
 
Zuletzt bearbeitet:

YadaDude

Mitglied
In der Klasse Arrays:
Es gibt 2 Membervariablen:
i
array

Da sie Membervariablen sind, werden beide beim instanzieren des Objectes initialisiert. Mit anderen Worten:
Java:
Arrays a1 = new Arrays();
An dieser Stelle wird den beiden Membervariablen von "a1" jeweils ihr erster Wert zugewiesen, in dem Fall:
i = 0 // 0 ist der default-Wert für int's
array = new int // da i zu diesen Zeitpunkt 0 ist, ich auch die Länge des Arrays 0

=> Das Array wird mit der Größe 0 erstellt. Wenn du später (innerhalb der Methode "setArraylaenge") die Membervariable "i" änderst, hat das keinerlei Auswirkungen auf die Membervariable "array".


... natürlich -.- :oops: Die Länge, bzw. Zellenanzahl eines Arrays kann nicht nachträglich geändert werden sondern bleibt wie beim erstellen angegeben.... :oops:

Grundlegend stellt sich nur die Frage, was eine Wrapper-Methode für ein Array bringen soll? Falls du versuchtst, ein Array mit veränderbarer Länge herzustellen: Sowas nennt sich "Collection" und es gibt in der Java API mind. 10 verschiedene Klassen, die auf unterschiedlichste Art und Weise eine solche Collection sind. Um ein Array mit dynamischer Länge nachzubilden, bietet sich "ArrayList" an.

Zählt wohl zu "Programmierstil", unser Professor will immer eine Test-Wrapperklasse für die main-methode, bzw. wird auch von meinem Lehrbuch "Java als erste Programmiersprache - vom Einsteiger zum Profi" so geregelt.

Mir selbst fehlt immernoch ziemlich der Durchblick bei Arrays und einfach grundliegendes Wissen fehlt, weshalb ich mir jetzt auch zum wiederholten male das Kapitel über Arrays zu Gemüte führen darf.

Außerdem versuche ich nebenbei so viel wie möglich zu programmieren, dass einfach etwas Routine reinkommt, beispielsweise folgendes Programm (auch wenn es eine Fehlermeldung gibt beim ausführen läuft es so wie erhofft^^):

Java:
class Arrays
{
 public static void main(String[] args)
 {
   int i = 7;
   int[] iArray = new int[i];
   
   iArray[0] = 2;
   iArray[1] = 4;
   iArray[2] = 8;
   iArray[3] = 16;
   iArray[4] = 32;
   iArray[5] = 64;
   iArray[6] = 128;
   
   for(int a=0; a<=iArray.length; a++)
   {
    System.out.println("Die Zelle " + a + " hat den Wert " + iArray[a] );
   }
 }
}


Außerdem noch zwei Codes, welche ich etwas auskommentiert habe mit der Bitte, dass mal jemand schnell drüberschauen kann. Ist nicht sonderlich kompliziert, doch gerade beim Konstruktor "Veranstaltung" als auch bei der Methode "addTeilnehmer" hatte ich ziemliche Schwierigkeiten und musste letzendlich in der Lösung nachsehen... Also gerade das Array-bezogene Zeug hab ich noch absolut nicht drauf.

Vielleicht kann man mir ja sagen wo genau mein falscher Ansatz liegt, hab versucht möglichst ausführlich alles mit eigenen Worten wiederzugeben, vielleicht habe ich ja absolut elementare Fehler im Gedankengang? Auszuschließen ist es - leider - auf keinen Fall ;(

Java:
public class Veranstaltung
{
 private String bezeichnung;
 
 private boolean kostenlos;
 
 private String[] teilnehmer; //ein Array in dessen einzelnen Zellen die Namen der Teilnehmer aufgenommen werden
 
 private int anzahlTeilnehmer;
 
 public Veranstaltung(int maximaleAnzahl)
 {
  teilnehmer = new String[maximaleAnzahl];  // es wird ein neues Array mit der Referenz "teilnehmer" erstellt, welches "maximaleAnzahl" Zellen hat
  anzahlTeilnehmer = 0;                     // ist das nicht unnötig? anzahlTeilnehmer hat als integer-Datentyp doch sowieso den default-wert "0" ?
 }
 
 public void setBezeichnung(String bezeichnung)
 {
   this.bezeichnung = bezeichnung;
 }
 
 public String getBezeichnung()
 {
   return bezeichnung;
 }
 
 public void setKostenlos(boolean kostenlos)
 {
   this.kostenlos = kostenlos;
 }
 
 public boolean getKostenlos()
 {
   return kostenlos;
 }
 
 public int getAnzahlTeilnehmer()
 {
   return anzahlTeilnehmer;
 }
 
 /*
  * "addTeilnehmer(), um einen Teilnehmer anzumelden. Hierzu wird der übergebene Name an die Stelle im Array teilnehmer geschrieben,
  * auf welche die Objektvariable anzahlTeilnehmer zeigt. Danach wird die Objektvariable anzahlTeilnehmer um eins erhöht.
  */
  
  public void addTeilnehmer(String neuerTeilnehmer)
  {
   if(anzahlTeilnehmer < teilnehmer.length)
   {
                                            /* also wenn der integer-Wert des Datenfeldes "anzahlTeilnehmer" kleiner ist als das Array
                                             * "teilnehmer" Zellen hat, wobei jeder "neuerTeilnehmer" die Anzahl der Zellen um eins ehöht
                                             *  wird die folgende Anweisung ausgeführt
                                             */

    teilnehmer[anzahlTeilnehmer] = neuerTeilnehmer; // ?? Was ich über die Objektvariable "neuerTeilnehmer" übergebe wird im Array an die Zelle mit
                                                    // dem Wert der Variablen "anzahlTeilnehmer" übergeben ??
                                                    
    anzahlTeilnehmer++;  // nach jedem durchlaufen wird der Wert "anzahlTeilnehmer" um eins erhöhrt <=> anzahlTeilnehmer = anzahlTeilnehmer + 1;
   }

   else
   {
     System.out.println("Der Teilnehmer " + neuerTeilnehmer + " kann nicht mehr hinzugefügt werden");
   }
  }

   public void print()
   {
     System.out.println("Die Veranstaltung " + bezeichnung + " hat " + anzahlTeilnehmer + " Teilnehmer");
     System.out.println("Kostenlos: " + kostenlos);
     for(int i=0; i < teilnehmer.length; i++)
     {
      System.out.println("Teilnehmer:   " + teilnehmer[i]);
     }
     
     
    /*  Wieso geht folgende Anweisung nicht?
     *  if(kostenlos = true)
     *  {
     *   this.kostenlos = kostenlos;
     *   System.out.println("Die Veranstaltung ist kostenlos");
     *  }
     */


     System.out.println(" ");
     System.out.println(" ");
   }
}


Java:
class TestVeranstaltung
{
  public static void main(String[] args)
  {
    Veranstaltung v1 = new Veranstaltung(8);
    v1.setBezeichnung("Rock am Ring");
    v1.setKostenlos(false);
    v1.addTeilnehmer("Angela Merkel");
    v1.addTeilnehmer("Gerhard Schröder");
    v1.addTeilnehmer("Frank-Walter Steinmaier");
    v1.print();
    
    Veranstaltung v2 = new Veranstaltung(2);
    v2.setBezeichnung("Treffen mit Will Smith");
    v2.setKostenlos(true);
    v2.addTeilnehmer("Max Mustermann");
    v2.print();
  }
}
 

Schandro

Top Contributor
Java:
for(int a=0; a<=iArray.length; a++){...
beim letzen Durchlauf ist "a" gleich der Länge des Arrays. Deswegen kommt eine ArrayIndexOutOfBoundsException. Du musst als Bedingung schreiben:
a < iArray.length


Java:
    teilnehmer[anzahlTeilnehmer] = neuerTeilnehmer; // ?? Was ich über die Objektvariable "neuerTeilnehmer" übergebe wird im Array an die Zelle mit
                                                    // dem Wert der Variablen "anzahlTeilnehmer" übergeben ??
im "anzahlTeilnehmer"-sten Eintrag im Array teilnehmer steht nun der String, der in neuerTeilnehmer steht. anzahlTeilnehmer wird als Index benutzt.


Wieso geht folgende Anweisung nicht?
* if(kostenlos = true)
Weil man mit
==
vergleicht. wenn du schreibst:
if(irgendeinBoolean = true){..
wird der Wert der Varaible auf true gesetzt und die Bedingung ist IMMER Wahr. Deswegen würde das if immer ausgeführt werden.
 

YadaDude

Mitglied
...und wieder voll in die Fallen getappt, die ich eigentlich schon kenne... :mad:

also so weit hab ich aber alles verstanden, es mir anderweitig notiert und weitere kleine Aufgaben zu Arrays gemacht... danke!


Kannst du mir noch die Zeile

Java:
teilnehmer = new String[maximaleAnzahl];

erklären?

Es wird ein neuer Array mit 'maximaleAnzahl' Zellen erzeugt Und dieser wird der Variablen 'teilnehmer' zugewiesen.

Aber die Erzeugung eines Arrays funktioniert doch nach dem Muster

int[] iArray = new int[8]; // für einen Array mit 8 Zellen für Integer-Datenwerte?

also müsste der Code doch lauten

Java:
String[] teilnehmer = new String[maximaleAnzahl];

??
 

Schandro

Top Contributor
man kann das deklarieren und initialisieren einer Variable getrennt machen. Bsp:
Java:
class A{
	private int[] myArray;
	
	public A(int maxLength){
		// hier zeigt "myArray" auf null

		myArray = new int[maxLength];
		// ab hier zeigt "myArray" auf ein int-Array der Größe maxLength
	}
}

€dit:
Ein anderes Beispiel:
Java:
public static void main(String[] args){
	String[] my2Array;
	my2Array = new String[5];
}
kein Compilerfehler
 
Zuletzt bearbeitet:

YadaDude

Mitglied
man kann das deklarieren und initialisieren einer Variable getrennt machen. Bsp:

€dit:
Ein anderes Beispiel:
Java:
public static void main(String[] args){
	String[] my2Array;
	my2Array = new String[5];
}
funktioniert genauso.

Also ist
Java:
public static void main(String[] args)
{
 int[] iArray = new int[8]
}

äquivalent zu

Java:
public static void main(String[] args)
{ 
 int[] iArray;
 iArray = new int[8];
}

... okay, eigentlich auch klar, hab mich im Coding jedoch verloren, brauch da wohl einfach noch etwas Routine :)

Danke! :applaus:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Anfängerfrage - array required, but java.lang.String found Java Basics - Anfänger-Themen 7
S Anfängerfrage zu Array Java Basics - Anfänger-Themen 8
D Anfängerfrage zu meinem Programm. Java Basics - Anfänger-Themen 15
V Anfängerfrage: HelloWorld läuft nicht Java Basics - Anfänger-Themen 3
F if else if anfängerfrage Java Basics - Anfänger-Themen 22
P Anfängerfrage, Primitiv,komplex Java Basics - Anfänger-Themen 1
pkm Erste Schritte Anfängerfrage zu ::new Java Basics - Anfänger-Themen 4
A Anfängerfrage Java Basics - Anfänger-Themen 7
M Erstellung Interfaces....totale Anfängerfrage Java Basics - Anfänger-Themen 16
W DNS Name auslesen + weitere Anfängerfrage Java Basics - Anfänger-Themen 4
R Anfängerfrage zu Methoden in Vererbte Klassen Java Basics - Anfänger-Themen 2
F Erste Schritte (Gelöst) Anfängerfrage Arraylist ausserhalb der Main Methode Java Basics - Anfänger-Themen 2
DeVolt Anfängerfrage zu util.scanner Java Basics - Anfänger-Themen 2
T Anfängerfrage zu Schleifen und Arrays Java Basics - Anfänger-Themen 5
B Collections ArrayList füllen - Anfängerfrage Java Basics - Anfänger-Themen 1
Shams Anfängerfrage zu jnlp Java Basics - Anfänger-Themen 0
T Kleine Anfängerfrage :) Java Basics - Anfänger-Themen 4
I Anfängerfrage JPanel repaint() Java Basics - Anfänger-Themen 6
F Anfängerfrage zu extends Java Basics - Anfänger-Themen 12
A Anfängerfrage: Zahlformat prüfen Java Basics - Anfänger-Themen 4
I Anfängerfrage: Fehlersuche Java Basics - Anfänger-Themen 2
A Methoden Anfängerfrage: 2 Listen Vergleichen Java Basics - Anfänger-Themen 7
L Anfängerfrage zu TileMap Java Basics - Anfänger-Themen 4
J anfängerfrage Java Basics - Anfänger-Themen 10
J Anfängerfrage HelloWorld? cmd-Problem Java Basics - Anfänger-Themen 35
J Anfängerfrage zu Grundlagen von Packages Java Basics - Anfänger-Themen 7
J Anfängerfrage zur Variablen Java Basics - Anfänger-Themen 11
J Anfängerfrage :-) Java Basics - Anfänger-Themen 5
M Banale Anfängerfrage Java Basics - Anfänger-Themen 3
J Leichte Java Anfängerfrage. Bitte schnelle Antwort. :) Java Basics - Anfänger-Themen 10
U Anfängerfrage - Multithreading Java Basics - Anfänger-Themen 8
T Aufrufen von get-Methode aus anderer Klasse (absolute Anfängerfrage) Java Basics - Anfänger-Themen 2
G Anfängerfrage zu "@Override" Java Basics - Anfänger-Themen 5
N Anfängerfrage richtige Syntax und Frage zu Vector Java Basics - Anfänger-Themen 7
M Kleine Anfängerfrage Java Basics - Anfänger-Themen 10
K Anfängerfrage: Fehlermeldung Java Basics - Anfänger-Themen 6
D Anfängerfrage N. Office Access NOA: setHidden und dann . Java Basics - Anfänger-Themen 2
N Anfängerfrage Java Basics - Anfänger-Themen 14
N anfängerfrage. returnwerte Java Basics - Anfänger-Themen 3
Gama Importieren von Klassen [Anfängerfrage] Java Basics - Anfänger-Themen 3
G Anfängerfrage Java Basics - Anfänger-Themen 11
B Anfängerfrage zu Swing "Reload" Java Basics - Anfänger-Themen 2
N Anfängerfrage bezüglich Speicherverwaltung Java Basics - Anfänger-Themen 3
G Anfängerfrage zu Threads Java Basics - Anfänger-Themen 14
Q Anfängerfrage Java Basics - Anfänger-Themen 6
J Anfängerfrage: wie externe Dateien importieren? Java Basics - Anfänger-Themen 5
S Anfängerfrage Java Basics - Anfänger-Themen 7
G Anfängerfrage zu Vererbung Java Basics - Anfänger-Themen 6
B Anfängerfrage zu 'NoClassDefFoundError' Java Basics - Anfänger-Themen 2
J IO Frage Hex-Output - Anfängerfrage Java Basics - Anfänger-Themen 5
T Anfängerfrage -> Projekt Java Basics - Anfänger-Themen 2
C Anfängerfrage ->Objekte und Arrays Java Basics - Anfänger-Themen 4
V Anfängerfrage Java Basics - Anfänger-Themen 8
E RMI Anfängerfrage Java Basics - Anfänger-Themen 10
DEvent anfängerfrage: wieso layout erst beim verändern? Java Basics - Anfänger-Themen 6
G Anfängerfrage Java Basics - Anfänger-Themen 2
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

Ähnliche Java Themen

Neue Themen


Oben