Guten Tag,
ich habe schon den ein oder anderen der zig Forenbeiträge zu einer Aufgabe, die euch bestimmt schon zum Hals raushängt, gelesen, leider aber kein passenden Lösungsansatz gefunden bisher.
Folgende Situation:
ich habe die Methode auflisten(int [][] argArray) {
}
und ein 2D Array mit [75][4].
Was soll die Methode machen?
Ich will mit dieser Methode die bereits vergebenen Arrays ausgeben, allerdings nur die.
Egal wie ich es versuche, ich ende entweder an dem Punkt, wo die Schleife mir alle Arrays, mit den Werten [0, 0, 0, 0] ausgibt und die bereits vergebenen Werte. Oder aber an dem Punkt, dass eine Ausgabe nur erfolgt, wenn der erste Index != 0 ist. Das macht aber kein sinn, wenn der user den ersten KistenID wert ja selbst festlegt.
Idee1> eine globale Variable neben KistenID, die per Inkrementierung die KistenID automatisch festlegt, dann würde die Variante klappen, dass nur gedruckt wird, wenn der erste kistenID "index" groesser 0 ist. Vorschläge bzw. Denkanstöße zur Umsetzung gerne gesehen, Lösungen will ich mir selbst erarbeiten, also will nichts vorgesagt bekommen
Idee2> das Array durchsuchen nach einem Wert größer 0, wenn kistenID index wert > 0 gefunden, dann Zwischenspeichern.
Dann nur die Arrays der entsprechenden zwischengespeicherten belegten kistenIDs ausdrucken.
wenn ich also als erste kistenIDs die Werte 1 7 und 27 festlege, sollte es die schleife durchlaufen und alle werte die an [0] stehen (wenn i = index) werden ausgedruckt. Arrays die nur mit den Default Werten [0,0,0,0] befüllt sind, sollen ausser acht gelassen werden.
ich habe schon den ein oder anderen der zig Forenbeiträge zu einer Aufgabe, die euch bestimmt schon zum Hals raushängt, gelesen, leider aber kein passenden Lösungsansatz gefunden bisher.
Folgende Situation:
ich habe die Methode auflisten(int [][] argArray) {
}
und ein 2D Array mit [75][4].
Was soll die Methode machen?
Ich will mit dieser Methode die bereits vergebenen Arrays ausgeben, allerdings nur die.
Egal wie ich es versuche, ich ende entweder an dem Punkt, wo die Schleife mir alle Arrays, mit den Werten [0, 0, 0, 0] ausgibt und die bereits vergebenen Werte. Oder aber an dem Punkt, dass eine Ausgabe nur erfolgt, wenn der erste Index != 0 ist. Das macht aber kein sinn, wenn der user den ersten KistenID wert ja selbst festlegt.
Idee1> eine globale Variable neben KistenID, die per Inkrementierung die KistenID automatisch festlegt, dann würde die Variante klappen, dass nur gedruckt wird, wenn der erste kistenID "index" groesser 0 ist. Vorschläge bzw. Denkanstöße zur Umsetzung gerne gesehen, Lösungen will ich mir selbst erarbeiten, also will nichts vorgesagt bekommen
Idee2> das Array durchsuchen nach einem Wert größer 0, wenn kistenID index wert > 0 gefunden, dann Zwischenspeichern.
Dann nur die Arrays der entsprechenden zwischengespeicherten belegten kistenIDs ausdrucken.
wenn ich also als erste kistenIDs die Werte 1 7 und 27 festlege, sollte es die schleife durchlaufen und alle werte die an [0] stehen (wenn i = index) werden ausgedruckt. Arrays die nur mit den Default Werten [0,0,0,0] befüllt sind, sollen ausser acht gelassen werden.
Java:
package lagerverwaltung;
import javax.swing.*;
import java.util.Arrays;
import java.util.List;
import java.util.ArrayList;
/**
* @author jonasstute
*
*/
public class DemoTapeSelfTitle {
// Methode eingabe, kein rueckgabewert (void) // 4 lokale Variablen fuer kistenID, breite, laenge, hoehe;
// die Kisten-ID wird vom Anwender eingegeben, wenn noch nicht vorhanden, dann wird eine neue erstellt, wenn vorhanden, dann abbruch
// zur Kisten-ID werden vom Anwender die Werte der Laenge, breite, hoehe eingegeben und im array der Id gespeichert
private static void eingabe(int[][] argArray) {
int kistenId;
int breite, laenge, hoehe;
kistenId = Integer.parseInt(JOptionPane.showInputDialog("Bitte eine Kisten-ID zwischen 1-75 eingeben: "));
// Bedingungen werden geprueft: liegt der Wert innerhalb des Array und wurde er noch nicht genutzt
if(kistenId>0 && kistenId <= argArray.length) {
if (argArray[kistenId-1][0] == 0){
argArray[kistenId-1][0] = kistenId;
breite = Integer.parseInt(JOptionPane.showInputDialog("Wert fuer die Breite der Kiste eingeben"));
argArray[kistenId-1][1] = breite;
hoehe = Integer.parseInt(JOptionPane.showInputDialog("Wert fuer die Hoehe der Kiste eingeben"));
argArray[kistenId-1][2] = hoehe;
laenge = Integer.parseInt(JOptionPane.showInputDialog("Wert fuer die Laenge der Kiste eingeben"));
argArray[kistenId-1][3] = laenge;
System.out.println("Die Kiste " + kistenId + " hat nun die Werte: " + breite + " Breite, " + hoehe + " Hoehe, " + laenge + " Laenge." );
}
}else if (kistenId > argArray.length || kistenId < 0){
System.out.println("Kisten-ID out of Range");
}
}
// Methode fuer die Anzeige einer bekannten Kisten-ID (muss vorher also eingegeben worden sein)
// kein return (void) // anwender gibt kistenid ein, wenn vorhanden anzeige der Daten, wenn nicht, ausgabe "Fehlermeldung"
private static void anzeigen(int[][] argArray) {
int kistenId;
kistenId = Integer.parseInt(JOptionPane.showInputDialog("Geben Sie eine vorhandene Kisten-ID ein: "));
try {
for(int i = 0; i <= argArray.length; i++) {
if (kistenId > 0 && kistenId <= argArray.length && argArray[i][0] == kistenId) {
System.out.println("Die Maße der Kiste " + kistenId + " ist " + Arrays.toString(argArray[i]));
return;
}
}
}catch (Exception e) {
System.out.println("Die gewaehlte ID ist noch nicht vergeben.");
}
}
// Methode fuer das bearbeiten einer bekannten Kisten-ID (muss vorher also eingegeben worden sein)
// kein return (void) // anwender gibt kistenid ein, wenn vorhanden anzeige der Daten, wenn nicht, ausgabe "Fehlermeldung"
private static void aendern(int[][] argArray) {
int kistenId;
int breite, laenge, hoehe;
kistenId = Integer.parseInt(JOptionPane.showInputDialog("Bitte die Kisten-ID eingeben deren Werte Sie aendern moechten: "));
if (argArray[kistenId-1][0] == 0 || kistenId > argArray.length ) {
System.out.println("Deine Eingabe war ungueltig." );
}
if(kistenId>0 && kistenId <argArray.length) {
if(argArray[kistenId-1][0]!=0) {
breite = Integer.parseInt(JOptionPane.showInputDialog("Kistenbreite eingeben"));
argArray[kistenId-1][1] = breite;
laenge = Integer.parseInt(JOptionPane.showInputDialog("Kistenlaenge eingeben"));
argArray[kistenId-1][2] = laenge;
hoehe = Integer.parseInt(JOptionPane.showInputDialog("Kistenhoehe eingeben"));
argArray[kistenId-1][3] = hoehe;
System.out.println("Die Kiste " + kistenId + " hat nun die Werte: " + breite + " Breite, " + hoehe + " Hoehe, " + laenge + " Laenge." );
}
}
}
// Methode fuer loeschen einer bekannten Kisten-ID (muss vorher also eingegeben worden sein)
// kein return (void) // anwender gibt kistenid ein, wenn vorhanden anzeige der Daten, wenn nicht, ausgabe "Fehlermeldung"
private static void loeschen(int[][] argArray) {
int kistenId;
int breite, laenge, hoehe;
kistenId = Integer.parseInt(JOptionPane.showInputDialog("Bitte gebe die Kisten-ID ein die du loeschen moechtest: "));
if(kistenId>0 && kistenId <= argArray.length)
if (argArray[kistenId-1][0] > 0){
breite = 0;
argArray[kistenId-1][1] = breite;
hoehe = 0;
argArray[kistenId-1][2] = hoehe;
laenge = 0;
argArray[kistenId-1][3] = laenge;
argArray[kistenId-1][0] = 0;
System.out.println("Die Kiste " + kistenId + " hat nun die Werte: " + breite + " Breite, " + hoehe + " Hoehe, " + laenge + " Laenge." );
kistenId = 0;
}else {
System.out.println("ungueltige Eingabe");
}
}
// Methode fuer die Anzeige aller Kisten-ID (muss vorher also nicht eingegeben worden sein)
// kein return (void) // anwender gibt kistenid ein, wenn vorhanden anzeige der Daten, wenn nicht, ausgabe "Fehlermeldung"
/*private static void auflisten(int[][] argArray) {
for (int i0 = 0; i0 < argArray.length; i0++) {
int[] idArray = argArray[i0];
System.out.println(Arrays.toString(argArray[i0]));
if () {
System.out.println("Es sind noch keine Kisten-IDs festgelegt.");
}else {
for (int i1 = 0; i1 < idArray.length; i1++){
int value = idArray[i1];
}
}
}
}*/
private static void listeDerKisten(int[][] argArray) {
}
public static void main(String[] args) {
System.out.println("_____Willkommen bei der Lagerverwaltung____");
int lagerArray[][] = new int[75][4];
String auswahlTreffen;
char auswahlBestaetigen;
while(true) {
System.out.println("\n1 Neuen Eintrag erstellen");
System.out.println("2 Bestehenden Eintrag bearbeiten");
System.out.println("3 Bestehenden Eintrag anzeigen");
System.out.println("4 Bestehenden Eintrag loeschen");
System.out.println("5 Alle Eintrage anzeigen");
System.out.println("6 Programm beenden");
auswahlTreffen = JOptionPane.showInputDialog("Bitte treffen Sie Ihre Auswahl");
auswahlBestaetigen = auswahlTreffen.charAt(0);
switch (auswahlBestaetigen) {
case '1':
System.out.println("Sie haben ausgewaehlt:\"Neuen Eintrag erstellen\"");
eingabe(lagerArray);
break;
case '2':
System.out.println("Sie haben ausgewaehlt:\"Bestehenden Eintrag bearbeiten\"");
aendern(lagerArray);
break;
case '3':
System.out.println("Sie haben ausgewaehlt:\"Bestehenden Eintrag anzeigen\"");
anzeigen(lagerArray);
break;
case '4':
System.out.println("Sie haben ausgewaehlt:\"Bestehenden Eintrag loeschen\"");
loeschen(lagerArray);
break;
case '5':
System.out.println("Sie haben ausgewaehlt:\"Alle Eintraege anzeigen\"");
listeDerKisten(lagerArray);
//System.out.println(idList);
break;
case '6':
System.out.println("Sie haben ausgewaehlt:\"Programm beenden\"");
System.out.println("\nAuf Wiedersehen!");
return;
}
}
}
}