Datentypen Array mit dynamischer Länge?

ciber

Mitglied
Hey Leute,

ich bin neu in der Programmierung und beschäftige mich zurzeit mit folgendem:

Eine Hauptklasse (main) erstellt ein Kunde vom Datentyp Konto. Dann wird dem Kunden ein paar Informationen mitgegeben (Name, Geld usw.).

Jetzt frage ich mich folgendes.
1. Kann ich mein (unten stehendes Beispiel) irgendwie verändern, dass ich aus dem Konto ein Array mache?

2. Gibt es in Java die Möglichkeit ein Array mit dynamischer Größe zu erstellen? Da ich ja nicht wissen kann, wieviel Kunden ich haben werde.

3. Ich suche einfach eine Möglichkeit, Kunden gesammelt irgendwo zu lagern (Array?), ohne für jeden eine neue Variable zu deklarieren.

4. Besitzt das Programm in seiner jetzigen Form "Fehler", die man vermeiden sollte?

Vorweg: Ich besitze zurzeit noch keine Kenntnisse über Frames, Listen usw. Das Programm habe ich jetzt nur mit den Methoden erstellt, die mir zur Verfügung standen, um die ganzen Lektionen aus einem Tutorial mal angewandt zu haben. Dass das Programm in seiner jetzigen Form absolut unbrauchbar ist, ist mir klar *g* :). Irgendwann kommt das ganze in mehrere Frames mit Buttons usw.

Hauptklasse:

Java:
import javax.swing.JOptionPane;


public class HauptKlasse {

	
	public static void main(String[] args) {
		
	    String[] options = {"Privatkunde","Geschäftskunde"};
	    int antwort_typ = 0;
	    String Name = "";
	    int Einzahlung = 0;
	    int KontoID = 0;
	    int i = 1;
	    
	    Konto Kunde;
		try {
			antwort_typ = JOptionPane.showOptionDialog(null, "Welcher Typ","Kontoerstellungstool", 1, 3, null, options, null);
			Name = JOptionPane.showInputDialog("Ihr Name: ");
			Einzahlung = Integer.parseInt(JOptionPane.showInputDialog("Wieviel Geld Starteinzahlung"));
			KontoID = (int) (Math.random()*1000000);
			
			Kunde = new Konto(KontoID, antwort_typ, Name, Einzahlung); 
					
            if(antwort_typ == 0)
            {
				Kunde.setM_TypString("Privat");
			}
            else
            {
            	Kunde.setM_TypString("Geschäftlich");
            }
			
			
			 Kunde.DatenAusgebenBank();
			
		} catch (Exception e) {
			System.out.println("Kritische Fehleingabe!");
		}
		
	}

}

Subklasse:

Java:
public class Konto {
		
	 // Variablendeklaration
	
	 private int m_KontoID = 0;
	 private String m_Name = "";
	 private int m_Typ = 0; // 0 = Privat, 1 = Geschäftlich
	 private String m_TypString = "";
	 private int m_Hoehe = 0;
	 
	 // Konstruktor
	 
	 public Konto(int ID, int Typ, String name, int einzahlung)
	 {
		 m_KontoID = ID;
		 m_Name = name;
		 m_Hoehe = einzahlung;
		 m_Typ = Typ;
	 }


    // Getter und Setter-Methoden
	 
	 
	public int getM_KontoID() {
		return m_KontoID;
	}

	public String getM_TypString() {
		return m_TypString;
	}


	public void setM_TypString(String m_TypString) {
		this.m_TypString = m_TypString;
	}


	public void setM_KontoID(int m_KontoID) {
		this.m_KontoID = m_KontoID;
	}



	public String getM_Name() {
		return m_Name;
	}



	public void setM_Name(String m_Name) {
		this.m_Name = m_Name;
	}



	public int getM_Typ() {
		return m_Typ;
	}



	public void setM_Typ(int m_Typ) {
		this.m_Typ = m_Typ;
	}



	public int getM_Hoehe() {
		return m_Hoehe;
	}



	public void setM_Hoehe(int m_Hoehe) {
		this.m_Hoehe = m_Hoehe;
	}
	 
	// Nützliche Methoden
	
	public void DatenAusgebenKunde()
	{
		System.out.println(m_Name + "\n" + m_Hoehe );
		System.out.println("-------------------------------------------------------");
	}
	
	public void DatenAusgebenBank()
	{
		System.out.println(m_KontoID + "\n" + m_TypString + "\n" + m_Name + "\n" + m_Hoehe);
		System.out.println("--------------------------------------------------------");
	}
	
	public void Erhoehen(int plus)
	{
		if(plus > 0)
		{
			m_Hoehe = m_Hoehe + plus;
		}
		else
		{
			System.out.println("Fehleingabe: Betrag muss größer 0 sein");
		}
		
	}
	
	public void Verringern(int minus)
	{
		if(minus < 0)
		{
			m_Hoehe = m_Hoehe + minus;
		}
		else
		{
			System.out.println("Fehleingabe: Betrag muss kleiner 0 sein");
		}
	} 
}
 

Thoosequa

Mitglied
Einfach eine ArrayList erstellen wo du mit

Java:
liste.add(Object)

und

Java:
liste.remove(Object)

Einfach Objekte in deine Arraylist reinstecken und rausnehmen kannst, ohne vorher die Größe kennen zu müssen.
 

tfa

Top Contributor
Benutze als Typ [c]List[/c]. Das ist ein Interface und wird z.B. von den Klassen LinkedList und ArrayList implementiert. Statt eines Arrays kannst du also z.B. folgendes schreiben:

Java:
  List<Konto> konten = new ArrayList<Konto>();
  konten.add(new Konto(...));

Die Liste wird dynamisch erweitert.
Vector sollte man nicht mehr benutzen, der ist veraltet. (Und gewöhne dir besser das [c]m_[/c]-Präfix ab. Das macht man in Java nicht).
 

Icewind

Bekanntes Mitglied
Java:
private int m_Typ = 0;

Das so ein Typ ja nur bestimmte werde annehmen wird (in deinem fall Geschäflich und Privat), mach lieber einen Enum daraus:

Java:
enum KontoTyp {
    Privat,
    Geschaeftlich;
}

Das erspart Fehler und macht den Code besser und leichter verständlich!,

Den enum kannst du dann einfach verwenden:

Java:
private KontoTyp kontoTyp = KontoTyp.Privat;
 

ciber

Mitglied
Hey,

danke für eure Antworten.

Warum sollte man das "m_"Präfix nichtmehr benutzen?

In meinem Tutorial (Buch zu Java7) steht, dass man Membervariablen mit "m_" benennen sollte.
 

Landei

Top Contributor
Warum sollte man das "m_"Präfix nichtmehr benutzen?

Namen sollen etwas darüber aussagen, um was es sich bei diesem Ding(*) handelt, nicht wo es definiert worden ist oder welchen Datentyp es hat. Die beiden letzteren Dinge können sich ändern, mal stellt sich heraus, dass man eine lokale Variable durch die ganze Klasse schleift, und man sie besser als Member-Variable definiert. Ein anderes Mal stellt sich heraus, dass eine Member-Variable nur an einer einzigen Stelle verwendet wird, und man sie besser lokal definiert. So auch mit dem Typ: Da wird aus dem Date ein Timestamp, und dann wechselt man zu Klassen von Joda-Time u.s.w. Aber was das Ding ist, wofür es wirklich gebraucht wird, ändert sehr selten sein "Wesen". Ein firstName ist ein Vorname, und wird aller Wahrscheinlichkeit noch in hundert Jahren als Vorname in der Address-Klasse hausen - egal ob als Member-Variable oder lokal, als String oder in einem spezialisierten "Name"-Typ.

Moderne IDEs machen es unnötig, auf Kosten der Lesbarkeit zusätzliche Informationen in die Bezeichner zu stopfen. Du kannst jede gängige IDE so einstellen, dass sie deine Member-Variablen rosa auf grünen Grund schrägfett blinkend darstellt, wenn du diese Information für so wichtig hältst (was sie in der Praxis nicht ist).

(*) Ich spreche ausdrücklich nicht nur von Variablen. Das alles gilt sinngemäß z.B. für die abscheuliche Unsitte, Interfaces etwa mit dem Präfix "I" zu kennzeichnen - als ob es mich interessieren würde und sollte, ob der BlubbService, den ich da zurückbekomme, ein Interface ist oder nicht - solange er die Methode hat, die ich aufrufen will.
 
Zuletzt bearbeitet:

ciber

Mitglied
Danke für die Erklärung Landei.

Mir ist aufgefallen, dass sich Java-Autoren in vielen Punkten widersprechen. Die Probleme hatte ich mit VBasic nicht.

Der eine Autor favorisiert AWT. Der nächste schreibt, dass man AWT nichtmehr nutzen sollte, da veraltet.
Der dritte nutzt Eclipse, der vierte NetBeans.

Aus einem Guß wirkt das nicht gerade und für Anfänger/in ist das auch nicht gerade zuträglich. Naja, was soll man machen :).

Ich werde jetzt erstmal die Liste einfügen.
 
T

Tomate_Salat

Gast
Wie alt ist das Buch denn? Swing baut auf AWT auf und man sollte eher auf Swing setzen (auf keinen Fall mischen). Ob du Netbeans, Intellij IDEA, Eclipse oder Notepad++ verwendest, ist für deinen Code an sich erstmal egal. Eine IDE hilft dir in erster Linie beim Programmieren und beinhaltet einfach einige nette Features, die dir das Leben erleichtern sollen.

In meiner Signatur findest du die Codeconvetions. Von dem [c]m_[/c] würde ich dir auch abraten. Ich würde mir in diesem Falle sogar überlegen, nicht eine andere Fachliteratur zu wählen.
 

ciber

Mitglied
Leider bekomme ich die Sache mit der Liste nicht hin.

Wenn ich die Zeile
Java:
Konto Kunde;

mit
Java:
ArrayList<Konto> Kunde = new ArrayList<Konto>();

ersetze und dann über

Java:
Kunde.add(new Konto(KontoID, antwort_typ, Name, Einzahlung));

einen neuen Kunden hinzufüge, funktioniert das soweit.

Allerdings kann ich auf keine Methoden der Klasse Kunde zugreifen.

Also

Java:
Kunde.DatenAusgebenBank();

funktioniert nicht. Wo liegt denn der Fehler?
 
T

Tomate_Salat

Gast
variablen werden lowerCamelCase geschrieben:
Kunde=>kunde
antwort_typ=>antwortTyp

das gleiche gilt für Methoden:
Kunde.DatenAusgebenBank() => kunde.datenAusgebenBank()
----

Aber zu deinem Hauptproblem: Du hast 0..n Kunden in der Liste. Da musst du dir erst einen rausziehen, bevor du mit dem Kunden-objekt arbeiten kannst:

[japi]List#get(int)[/japi]

z.B.:
Java:
Konto konto=kunde.get(0);
konto.datenAusgebenBank();
 

Landei

Top Contributor
Zuletzt bearbeitet:
H

hüteüberhüte

Gast
Soweit ich das noch weiß, besitzt er aber auch ein anderes Resize-Verhalten. Er vergrößert das interne Array glaub ich in kleineren Schritten. Bin mir aber auch nicht mehr so sicher
Edit: Unser Prof schwärmte jedenfalls von Vector :eek:
 
Zuletzt bearbeitet von einem Moderator:
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Objekt-Array dynamischer Länge aus Benutzereingaben erstellen Java Basics - Anfänger-Themen 6
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
padde479 Array Multiplikation der ersten n Zahlen Java Basics - Anfänger-Themen 7
G zweidimensionales int Array sortieren Java Basics - Anfänger-Themen 57

Ähnliche Java Themen

Neue Themen


Oben