Bitte um Kontrolle meines Quelltextes

Status
Nicht offen für weitere Antworten.

Mane123

Bekanntes Mitglied
Hallo zusammen,

ich habe ein kleines Programm erstellt, mit welchem ich Kisten erstellen kann und diese bearbeiten, löschen, ändern, anzeigen und alle Kisten auflisten kann.

Ich kopiere hier mal meinen Quelltext rein.

Ich muss dazu sagen, ich bin noch ein ziemlicher Neuling und bitte darum um nicht allzu komplizierte Verbesserungsvorschläge :)

Ich möchte gerne die Klasse java.util.Arrays in den Quelltext einbauen. Wo könnte ich diese verwenden?
Wie kann ich denn mehrdimensionale Arrays sortieren und durchsuchen? binarySearch scheint ja hier leider nicht zu funktionieren.

Java:
import javax.swing.*;

public class Aufgabe04 {

static void anlageKisten (int [] [] array) {
	
	int nummerKiste;

	nummerKiste = Integer.parseInt (JOptionPane.showInputDialog ("Geben Sie eine Nummer von 1 - 100 ein"));

	if (nummerKiste >= 1 && nummerKiste <= array.length) {
		if (array [nummerKiste - 1] [0] == 0) {
		
			array [nummerKiste - 1] [0] = nummerKiste;
			array [nummerKiste - 1] [1] = Integer.parseInt (JOptionPane.showInputDialog ("Geben Sie die Länge der Kiste in cm ein."));
			array [nummerKiste - 1] [2] = Integer.parseInt (JOptionPane.showInputDialog("Geben Sie die Breiter der Kiste in cm ein."));
			array [nummerKiste - 1] [3] = Integer.parseInt (JOptionPane.showInputDialog ("GEben Sie die Höhe der Kiste in cm ein."));
			array [nummerKiste - 1] [4] = array[nummerKiste-1] [1] * array[nummerKiste-1] [2] * array [nummerKiste-1] [3];
		}
		else 
			System.out.println ("Die Kiste ist bereits vorhanden");
	}

	else
		System.out.println ("Sie haben eine falsche Kistennummer eingegben.");

}

static void loeschenKisten (int [] [] array) {
	
	int nummerKiste;
	
	nummerKiste = Integer.parseInt(JOptionPane.showInputDialog ("Bitte geben Sie die Nummer der Kiste ein, die Sie löschen möchten"));

	if (nummerKiste <= array.length && nummerKiste >= 1 && array [nummerKiste - 1] [0] != 0) {
		if (array [nummerKiste - 1] [0] >= 0 && nummerKiste <= array.length) {
			for (int i = 0; i < array[nummerKiste-1].length; i++) 
				array [nummerKiste-1] [i] = 0;
		}
	}
	else
		System.out.println ("Sie haben eine falsche Nummer eingegeben!");

}

static void aendernKisten (int [] [] array) {
	
	int nummerKiste;
	
	nummerKiste = Integer.parseInt (JOptionPane.showInputDialog ("Geben Sie die Nummer der Kiste ein, die Sie ändern möchten!"));
	
	if (array [nummerKiste - 1] [0] != 0 && nummerKiste > 1&& nummerKiste <= array.length) {
		
		array [nummerKiste - 1] [1] = Integer.parseInt (JOptionPane.showInputDialog ("Geben Sie die Länge der Kiste in cm ein."));
		array [nummerKiste - 1] [2] = Integer.parseInt (JOptionPane.showInputDialog("Geben Sie die Breiter der Kiste in cm ein."));
		array [nummerKiste - 1] [3] = Integer.parseInt (JOptionPane.showInputDialog ("GEben Sie die Höhe der Kiste in cm ein."));
		array [nummerKiste - 1] [4] = array[nummerKiste] [1] * array[nummerKiste] [2] * array [nummerKiste] [3];
			
	}
	
	else 
		System.out.println ("Sie haben eine ungültige Kistennummer eingegeben!");
}

static void anzeigenKisten (int [] [] array) {
	
	int nummerKiste;
	
	nummerKiste = Integer.parseInt (JOptionPane.showInputDialog ("Geben Sie die Nummer der Kiste ein, die Sie anzeigen möchten"));
	
	if (array [nummerKiste - 1] [0] != 0 && nummerKiste >= 1 && nummerKiste < array.length) {
		System.out.println ("Die Nummer der Kiste lautet: " + array [nummerKiste-1] [0]);
		System.out.println ("Die Länge der Kiste beträgt " + array [nummerKiste-1] [1]+ " cm");
		System.out.println ("Die Breite der Kiste beträgt " + array [nummerKiste-1] [2]+ " cm");
		System.out.println ("Die Höhe der Kiste beträgt " + array [nummerKiste-1] [3] + " cm");
		System.out.println ("Das Volumen der Kiste beträgt " + array [nummerKiste-1] [4] + " cm³");
	}
	
	else
		System.out.println ("Sie haben eine falsche Kistennummer eingetragen!");
	
}

static void auflistenKisten (int [] [] array) {


	for (int indexaussen = 0; indexaussen < array.length; indexaussen++)
		
			if (array [indexaussen] [0] != 0) {
				System.out.println ("Die Kiste hat die Nummer " + array[indexaussen] [0]);
				System.out.println ("Die Kiste hat eine Länge von " + array[indexaussen] [1] + " cm");
				System.out.println ("Die Kiste hat eine Breite von " + array[indexaussen] [2] + " cm");
				System.out.println ("Die Kiste hat eine Höhe von " + array [indexaussen] [3] + " cm");
				System.out.println ("Die Kiste hat ein Volumen von " + array [indexaussen] [4] + " cm³");
				System.out.println();
			}
}
		/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
int [] [] arrayKisten = new int [100] [5];
char auswahl;
int abbruchkriterium = 0;

while (abbruchkriterium == 0) {
auswahl = (JOptionPane.showInputDialog ("Sie haben folgende Möglichkeit: 1 - Kiste anlegen, 2 - Kiste löschen, 3 - Kiste ändern, 4 - Kiste Anzeigen, 5 -Kisten auflisten").charAt(0));

switch (auswahl) {
	case '1':
		anlageKisten (arrayKisten);
		break;
	
	case '2':
		loeschenKisten (arrayKisten);
		break;
		
	case '3':
		aendernKisten (arrayKisten);
		break;
		
	case '4':
		anzeigenKisten (arrayKisten);
		break;
		
	case '5':
		auflistenKisten (arrayKisten);
		break;
		
	default:
		System.out.println ("Sie haben eine falsche Auswahl getroffen!");
		break;
		
}
abbruchkriterium = Integer.parseInt (JOptionPane.showInputDialog ("Wenn Sie abbrechen möchten, geben Sie die Zahl 1 ein, wenn Sie fortfahren möchten, geben Sie die Zahl 0 ein"));
}



	}

}
 

madboy

Top Contributor
Da das aussieht wie eine Hausaufgabe: Musst du ein zweidimensionales Array verwenden? Habt ihr schon Objektorientierung durchgenommen? Falls ja, würde sich eine Klasse "Kiste" anbieten, die eine Höhe und eine Breite hat.

Was hast du mit java.util.Arrays vor? Beim Überfliegen ist mir keine nützliche Verwendung aufgefallen.
 

Landei

Top Contributor
Schließe mich meinem Vorredner an. Eine Kisten-Klasse wäre hilfreich, und dann könnte alles über ein eindimensionales Array erledigt werden (da die Kisten nur über ihre Nummer identifiziert werden, würde sich im "richtigen Leben" stattdessen eine Map<Integer, Kiste> anbieten)
 

Mane123

Bekanntes Mitglied
Guten Morgen!

Das ist keine direkte Hausaufgabe, ich mache freiwillig einen Java-Kurs neben der Arbeit und da ist so eine Übung dabei.
Ich habe in einer der letzten Lektionen was von java.util.Arrays gelernt, da dachte ich, es sollte anzuwenden sein, mir ist allerdings auch nicht aufgefallen, wo ich es verwenden kann.

Ja, ich muss ein mehrdimensionales Array verwenden

Objektorientierung habe ich noch nicht gelernt, das kommt jetzt aber dann.

Ich habe noch ein paar Fragen:

- Wie kann ich mehrdimensionale Arrays sortieren und durchsuchen?
- Ich habe jetzt hier einen Nummernkreis für die Kisten verwendet, welcher den Grenzen des Arrays in der ersten Dimension entrspricht. Ich hätte es auch schon mal mit einem anderen Nummernkreis der Kisten probiert (z. B. 1000 - 1099) aber wie klappt das denn, ich meine ich weiß nicht wie ich prüfen kann, ob die Nummer 1000 z.B. schon vergeben ist, oder nicht?

Viele Grüße
 

Landei

Top Contributor
Guten Morgen!
Ich habe jetzt hier einen Nummernkreis für die Kisten verwendet, welcher den Grenzen des Arrays in der ersten Dimension entrspricht. Ich hätte es auch schon mal mit einem anderen Nummernkreis der Kisten probiert (z. B. 1000 - 1099) aber wie klappt das denn, ich meine ich weiß nicht wie ich prüfen kann, ob die Nummer 1000 z.B. schon vergeben ist, oder nicht?
Viele Grüße
Entweder das ganze Array durchgehen:
Java:
static int indexOf(int[][] array, int nummer) {
   for(int i = 0; i < array.length; i++) {
       if (array[i][0] == nummer) {
           return i;
       }  
   }
   return -1; //-1 ist kein gültiger Index und soll anzeigen, dass nix gefunden wurde
}

Mit einer ordentlichen Datenstruktur und Kiste als eigene Klasse reduziert sich das auf:

Java:
import java.util.*;
...
Map<Integer, Kiste> kisten = new HashMap<Integer, Kiste>();

...packe die Kisten-Map voll...

//Test, ob eine Nummer vergeben ist
if (kisten.containsKey(nummer)) { 
  System.out.println("Nummer vorhanden"); 
}

//Kiste mit der Nummer zurückgeben, oder null falls sie nicht existiert
Kiste kiste = kisten.get(nummer);
 

Mane123

Bekanntes Mitglied
Hallo!

Also Objektorientierung habe ich noch nicht gelernt, da möchte ich im Juli damit anfangen.

Ich hab mir das mit einem anderen Nummernkreis für die Kisten (z. B. von 1000 - 1099) mal wie folgt überlegt:

Java:
if (nummerKiste >= 1000 && nummerKiste <= 1099 ) {
			int i = 0;
			for ( i = 0; i < array.length; i++) {
				
			if (array [i] [0] == 0) {
		
				array [i] [0] = nummerKiste;
				array [i] [1] = Integer.parseInt (JOptionPane.showInputDialog ("Geben Sie die Länge der Kiste in cm ein."));
				array [i] [2] = Integer.parseInt (JOptionPane.showInputDialog("Geben Sie die Breiter der Kiste in cm ein."));
				array [i] [3] = Integer.parseInt (JOptionPane.showInputDialog ("GEben Sie die Höhe der Kiste in cm ein."));
				array [i] [4] = array[i] [1] * array[i] [2] * array [i] [3];
				i = 101;
				
			}
		
			else 
				System.out.println ("Die Kiste ist bereits vorhanden");
			}
	
		}
		else
			System.out.println ("Sie haben eine falsche Kistennummer eingegben.");
		}

Hier ist allerdings folgendes Problem:

Wenn ich eine zweite oder xte Kiste eingebe, dann erscheint immer der Satz "Die Kiste ist bereits vergeben", da ja die Schleife wieder von 0 beginnt und so lange läuft, bis eine Variable gefunden wird, bei der die Aussage [0] == 0 zutrifft.
Wie kann ich das denn mit möglichst einfachen Mitteln umgehen?

Viele Grüße
 

Landei

Top Contributor
Java:
if (nummerKiste >= 1000 && nummerKiste <= 1099 ) {
    boolean found = false;        
    for (int i = 0; i < array.length; i++) {
            if (array [i] [0] == 0) {
                array [i] [0] = nummerKiste;
                array [i] [1] = Integer.parseInt (JOptionPane.showInputDialog ("Geben Sie die Länge der Kiste in cm ein."));
                array [i] [2] = Integer.parseInt (JOptionPane.showInputDialog("Geben Sie die Breiter der Kiste in cm ein."));
                array [i] [3] = Integer.parseInt (JOptionPane.showInputDialog ("GEben Sie die Höhe der Kiste in cm ein."));
                array [i] [4] = array[i] [1] * array[i] [2] * array [i] [3];
                found = true;
                break;
            }
        }
        if (! found) {
              System.out.println ("Kein freier Platz mehr vorhanden");
        }
    }  else {
            System.out.println ("Sie haben eine falsche Kistennummer eingegben.");
    }
}

Vor der eigentlichen Schleife könnte man nochmal in einer extra Schleife überprüfen, ob die Kiste schon vorhanden ist, und dann abbrechen. Aber wie gesagt, Arrays sind dafür eigentlich schlecht geeignet (feste Indexe, feste Länge). Mit der Objektorientierung in Java zu warten halte ich auch für unnötig: Java ist nun mal objektorientiert, und wenn du versucht, darin wie in Basic oder Pascal zu programmieren, dann ist das nur frustrierend. Eine ganz einfache Kistenklasse ohne irgendwelche Kringel und Schleifen würde dir das Leben wesentlich vereinfachen.
 
Zuletzt bearbeitet:

Developer_X

Top Contributor
ich schließe mich dem Landei an,
Landei leg dir mal ein bild zu, damit man sich vorstellen kann wie du aussiehst, :lol:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
ineedhelpinjava OOP Bitte wichtig Java Basics - Anfänger-Themen 6
G Bitte meinen Account löschen Java Basics - Anfänger-Themen 1
D Bitte um Hilfe muss es schnellstmöglich erledigen Java Basics - Anfänger-Themen 15
I Bitte um Hilfe zu unterstehenden Code Java Basics - Anfänger-Themen 6
M Bitte um Hilfe bei 2DArrays Java Basics - Anfänger-Themen 8
D Abrechnung bitte um hilfe Java Basics - Anfänger-Themen 25
Vivien Bitte um Optimierungsvorschläge / Verbesserungsvorschläge / allgemeines Feedback Java Basics - Anfänger-Themen 8
J Doppelt verkette Liste ich bitte um Hilfe Java Basics - Anfänger-Themen 4
J Java List, Bitte um Hilfe Java Basics - Anfänger-Themen 15
J Java List, bitte um Hilfe Java Basics - Anfänger-Themen 3
pry bitte Hilfe beim Kreditrechner objektorientiert Java Basics - Anfänger-Themen 6
marcooooo einmal noch schnell hilfe bitte:/ Java Basics - Anfänger-Themen 2
F Methoden Bitte Helft mir meinen Fehler zu finden. Möchte in diesem Bankenprogramm durch die Konsoleneingabe auswählen welches Konto reduziert und welches erhö Java Basics - Anfänger-Themen 17
I Methoden char Array Aufgabe (bitte hierbei um Hilfe) Java Basics - Anfänger-Themen 3
ZH1896ZH OOP Verstehe nicht was der Hinweis bedeutet, bitte um Hilfe! Java Basics - Anfänger-Themen 2
B BITTE!! Ich brauche dringende Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 17
S Bitte Hilfe zu Fehlermeldung am Handy Java Basics - Anfänger-Themen 2
I Do-While / Kalkulator / Bitte um Hilfe Java Basics - Anfänger-Themen 9
P Bitte Hinweise zu folgendem "Klassenproblem" Java Basics - Anfänger-Themen 3
M Bitte um Hilfe bei Quellcode (Rekursion) Java Basics - Anfänger-Themen 6
A Erste Schritte Bitte helfen sie mir diese Programm zu schreiben Java Basics - Anfänger-Themen 12
C Stack und Queue in Aktion (Bitte Hilfe für die Klausur) Java Basics - Anfänger-Themen 7
F (Eclipse) Beim importieren etwas fehlerhaft bitte um Hilfe :) Java Basics - Anfänger-Themen 3
B MVC Struktur mit mehreren Szenen - wer schaut mal bitte drüber? Java Basics - Anfänger-Themen 2
T Bitte um Hilfe Java Basics - Anfänger-Themen 9
D Arraylisten sortieren bitte um Hilfe Java Basics - Anfänger-Themen 4
P Erste Schritte Bitte ein paar Erklärungen zu meinem Code Java Basics - Anfänger-Themen 6
J Bitte Hilfe Java Basics - Anfänger-Themen 4
W FileReader - Bitte um Erklärung Java Basics - Anfänger-Themen 7
V Memory Logik Problem/Denkblockade, bitte helft Java Basics - Anfänger-Themen 1
T Bitte um Hilfe bei Aufgabe: Long zahl = Long.parseLong(args [0]); Java Basics - Anfänger-Themen 3
J Bitte um Erklärung Java Basics - Anfänger-Themen 4
A GUI- Allgemeines Problem (Bitte helfen) Java Basics - Anfänger-Themen 15
D Bitte um Hilfe bei "error: package com.apple.eawt does not exist import com.apple.eawt.*;" Java Basics - Anfänger-Themen 1
C Polymorphie - Erklärung bitte Java Basics - Anfänger-Themen 5
M Quadrat zeichnen einfach bitte! Java Basics - Anfänger-Themen 2
F Bitte mal Zusammenhänge der Klassen erklären Java Basics - Anfänger-Themen 8
P <identifier> expected Fehler bitte um Hilfe Java Basics - Anfänger-Themen 5
J Kann mir bitte mal jemand diese Codes erklären? Java Basics - Anfänger-Themen 19
J Threading-Aufgabe. Totale Noob Fragen, aber bitte trotzdem beantworten ;) Java Basics - Anfänger-Themen 7
O Rundungsfehler bitte erklären! Java Basics - Anfänger-Themen 4
K NullPointerException wird geworfen, bitte um Hilfe! Java Basics - Anfänger-Themen 7
M Erklärung Code Mergesort Bitte Java Basics - Anfänger-Themen 3
N While Schleife Erklärung Bitte Java Basics - Anfänger-Themen 3
S Variablen Hilfe bitte Java Basics - Anfänger-Themen 6
Z Erste Schritte Bitte helft mir dringend!! Java Basics - Anfänger-Themen 3
T Unit tests fehlerhaft bitte um hiiiiilfe :D Java Basics - Anfänger-Themen 1
J Ich bitte DRINGEND um Hilfe!!! Java Basics - Anfänger-Themen 16
Q Importieren meiner Boundary? Bitte Hilfe Java Basics - Anfänger-Themen 3
T Eine kurze frage vor der prüfung bitte. Java Basics - Anfänger-Themen 5
CyberFish initialisieren, obwohl es gemacht wurde! Bitte um Hilfe Java Basics - Anfänger-Themen 10
H Bitte um Hilfe von Profis. Java Basics - Anfänger-Themen 5
S Klassen Formel zur Berechnung .... Bitte um Hilfe Java Basics - Anfänger-Themen 7
H Methoden Bitte um Erklärung der askString-Methode Java Basics - Anfänger-Themen 15
J Probleme bei kompilieren ... Bitte um Hilfe Java Basics - Anfänger-Themen 27
O Erste Schritte Aller Anfang ist schwer ! Bitte um Unterstützung Java Basics - Anfänger-Themen 6
G Bitte um Erklärung dieser einer Zeile Java Basics - Anfänger-Themen 5
P Bitte um hilfe bei einfachem Rechner Java Basics - Anfänger-Themen 7
B Bitte Hilfe für Funktionalität eines Sudokus Java Basics - Anfänger-Themen 8
G Brauche bitte Hilfe, bei umgekehrter Ausgabe!! Java Basics - Anfänger-Themen 6
G Input/Output FilenameFilter aber bitte keine Unterordner Java Basics - Anfänger-Themen 5
J Vererbung Anfänger Programm bitte um Kritik&Anregungen Java Basics - Anfänger-Themen 21
N Bitte Java Basics - Anfänger-Themen 2
D ???:L Bitte einmal mit drüber nachdenken Java Basics - Anfänger-Themen 5
eLogic DownloadManager - Bitte helft mir Java Basics - Anfänger-Themen 7
R Vererbung Bitte um Erklärung - Instanzvariablen Java Basics - Anfänger-Themen 8
U finde fehler nicht! bitte um hilfe Java Basics - Anfänger-Themen 8
M Problem: code too large - bitte um Hilfe Java Basics - Anfänger-Themen 12
U Bitte Helfen kleines Spiel Java Basics - Anfänger-Themen 9
B Java und Javac funktionieren nicht - bitte hilfe Java Basics - Anfänger-Themen 5
P Bitte helft mir Java Basics - Anfänger-Themen 3
3 Bitte um Hilfe bei Lösung einer Aufgabe Java Basics - Anfänger-Themen 16
M Aus CSV-Datei lesen und anzeigen (bitte schnell um Antwort) Java Basics - Anfänger-Themen 6
R Jave Problem... bitte um Hilfe!! Java Basics - Anfänger-Themen 6
S Java problem, bitte um hilfe! Java Basics - Anfänger-Themen 9
B Bitte um Hilfe es geht um Array + Punkte wie Dreieck,Fläche etc. Java Basics - Anfänger-Themen 12
C Bitte kurzes Feedback - JavaVersionen Java Basics - Anfänger-Themen 6
M Bitte um Verbesserungsvorschläge Java Basics - Anfänger-Themen 14
N verständniss problem bitte um hilfe Java Basics - Anfänger-Themen 3
L Brauche bitte dringend Hilfe für Klausur Java Basics - Anfänger-Themen 8
B Monat und Jahr bitte um Hilfe Java Basics - Anfänger-Themen 8
J Datentypen Generics - Bitte helfen !! Java Basics - Anfänger-Themen 9
T Java Beispiel Bitte helft mir Java Basics - Anfänger-Themen 5
A Dringende Bitte um Erklärungen zum besseren Verständnis Java Basics - Anfänger-Themen 4
D Java Problem bitte um hilfe Java Basics - Anfänger-Themen 4
S Datei-KopierProgramm ? CODE BITTE VERBESSERN Java Basics - Anfänger-Themen 11
D code erklären bitte ! Java Basics - Anfänger-Themen 15
Rudolf Verstehe das Ergebnis nicht - bitte erklären Java Basics - Anfänger-Themen 7
M Kann mir bitte jemand "java.util.ArrayList" erklären? Java Basics - Anfänger-Themen 5
J Leichte Java Anfängerfrage. Bitte schnelle Antwort. :) Java Basics - Anfänger-Themen 10
S BITTE UM HILFE: Unterschied Deklaration und Signatur einer Methode Java Basics - Anfänger-Themen 3
S BITTE UM HILFE HASHTABLE/import java.util.Hashtable in Ecplipse Java Basics - Anfänger-Themen 12
T Problem mit Aufgabe..bitte um Hilfe Java Basics - Anfänger-Themen 8
G Bitte um Erklärung Java Basics - Anfänger-Themen 9
K 50 errormeldungen- komme auch nach vielen Nachmittagen nicht weiter. bitte helfen Java Basics - Anfänger-Themen 39
D Ausgabe sauber formatieren *bitte nochmal reinschaun* Java Basics - Anfänger-Themen 7
S Bitte um Hilfe beim unsortierten Binärbaum!! Java Basics - Anfänger-Themen 6
D Ausgabe in Datei ( bitte helfen ) Java Basics - Anfänger-Themen 13
-horn- Bitte: Wie besondere Daten auslesen und umspeichern? Java Basics - Anfänger-Themen 3
N Bitte um Hilfe - zyklisch Existenz einer Datei prüfen Java Basics - Anfänger-Themen 21

Ähnliche Java Themen

Neue Themen


Oben