Verständis Probleme bei Arrays

ohsmos

Mitglied
Hallo,

leider bin ich schon länger etwas raus aus Java, aber die Grundlagen beherrsche ich noch und von Tag zu Tag kommt immer ein Stückchen wieder zurück.
(Wer gerne die komplette Aufgabe haben möchte kann mir eine PN schreiben.)

Aufgabenstellung:



Mein Problem:
2) Bei der Aufgabe 2, weiß ich nicht welche überhaupt die nächst freie Reservierungsnummer ist.
Es wurde nämlich kein Parameter angeben auf den ich zugreifen könnte.
Außerdem habe ich bereits in der ersten Aufgabe alle Plätze auf "frei" zurück gesetzt, somit können gar keine Reservierungen geben...

4) Ich weiß leider nicht ob das der korrekte Lösungsweg wäre, aber ich dachte so, da ich die Sitze nun neu setzten muss gucke ich erstmal in welcher Spalte ich bin. Hier kommt schon mein Problem, die sagen, dass das ein zweidimensionales Array ist wobei die erste Dimension die Spalten sind (Sprich die Reihe also A bis Z) und die zweite die Sitznummern.
Wie kann man nun char mit einem array vergleichen? Denn um zusehen wo ich überhaupt bin wollte ich eine einfache if bedingung nehmen die vergleicht und dann kinosaal[von][bis] neu beschreiben lassen...

Ich hoffe ich habe es verständlich verfassen können.
Ich möchte keine Lösung sondern ehe eine Art schubst in die richtige Richtung.

Vielen Dank!!

Vollständiger QuellCode:
Java:
package Mini2;


public class Miniprojekt2 {
	
	// ab hier bitte keine Änderungen vornehmen
	int[][] kinosaal;

	public Miniprojekt2(int anzahlReihen, int anzahlProReihe) {
		this.kinosaal = new int[anzahlReihen][anzahlProReihe];
	}
	
	int[][] getKinosaal() {
		return kinosaal;
	}

	void setKinosaal(int[][] kinosaal) {
		this.kinosaal = kinosaal;
	}
	
	private void debugPrint() {
		System.out.print("   1");
		for (int i = 1; i < kinosaal[0].length -1; i++)
			System.out.print("  ");
		System.out.println(" " + kinosaal[0].length);
		for (int i = 0; i < kinosaal.length; i++) {
			System.out.print((char)('A'+i) + ":");
			for (int j = 0; j < kinosaal[i].length; j++) {
				if (kinosaal[i][j] == 0)
					System.out.print(" -");
				else if (kinosaal[i][j] > 0 && kinosaal[i][j] < Integer.MAX_VALUE)
					System.out.print(" R");
				else
					System.out.print(" B");
			}
			System.out.println();
		}
		System.out.println();
	}

	// bis hier bitte keine Änderungen vornehmen
	// hier beginnt der zu bearbeitende Teil
	
	
	// Aufgabe 1
	public void neueVorstellungVorbereiten() {
		
		for(int i = 0; i < kinosaal.length; i++){
			for(int j = 0; j < kinosaal[i].length;j++){
				kinosaal[i][j] = 0;
			}
			
		}
		
		
	}
	
	// Aufgabe 2
	public int naechsteReservierungsnummer() {
		
		for(int i = 0; i < kinosaal.length; i++){
			for(int j = 0; j < kinosaal[i].length;j++){
				if(kinosaal[i][j] > 0 && kinosaal[i][j] < Integer.MAX_VALUE){
					return kinosaal[i][j];
				}
				else
					return 1;
				
			}
			
		}
			return 0;
		
	}
	
	// Aufgabe 3
	public boolean platzBelegt(char reihe, int platz) {

		if(reihe == 'A' && platz <= 7 || reihe == 'B' && platz <= 7 || reihe == 'C' && platz <= 7 || reihe == 'D' && platz <= 7){
			return true;
			}
		
		else
		return false;
		
	}
	
	// Aufgabe 4
	public int festePlaetzeReservieren(char reihe, int start, int ende) {
		
		
		for(int i = 0; i < kinosaal.length; i++){
			for(int j = 0; j < kinosaal[i].length; j++){
				if(){
					
				}
			}
		}
		
		return -1;
		//TODO
	}
	
	public boolean bezahleReservierung(int nummer) {
		return true;
		//TODO
	}
	
	public float anteilFreiePlaetze() {
		return 0;
		//TODO
	}
	
	public int effizienteReservierung(int anzalLeute) {
		return 0;
		//TODO
	}
	
	public int knoblauchReservierung(int anzalLeute) {
		return 0;
		//TODO
	}

	
	public static void main(String[] args) {
		Miniprojekt2 demo = new Miniprojekt2(4, 7);
		System.out.println("Der leere Saal sieht so aus (- frei, B bezahlt, R reserviert):");
		demo.debugPrint();
		System.out.println("Die Methode platzBelegt liefert für den existierenden Platz C 7: " + demo.platzBelegt('C', 7));
		System.out.println("Die Methode platzBelegt liefert für den nicht existierenden Platz  Q 23: " + demo.platzBelegt('Q', 23));
		System.out.println("Die Methode naechsteReservierungsnummer liefert: " + demo.naechsteReservierungsnummer());
		System.out.println("Die Methode festePlaetzeReservieren liefert für Reihe C Plätze 3-7 die Reservierungsnummer: " +demo.festePlaetzeReservieren('C', 3, 7) );
		System.out.println("Nach der Reservierung der Plätze 3,4,5,6 und 7 in der Reihe C:");
		demo.debugPrint();
		System.out.println("Die Methode platzBelegt liefert für den reservierten Platz C 7: " + demo.platzBelegt('C', 7));
		System.out.println("Die Methode naechsteReservierungsnummer liefert: " + demo.naechsteReservierungsnummer());
		System.out.println("Die Methode festePlaetzeReservieren liefert für Reihe C Plätze 1-3 die Reservierungsnummer: " +demo.festePlaetzeReservieren('C', 1, 3) );
		System.out.println("Die Methode festePlaetzeReservieren liefert für Reihe D Plätze 7-5 die Reservierungsnummer: " +demo.festePlaetzeReservieren('D', 7, 5) );
		demo.debugPrint();
		System.out.println("Die Methode festePlaetzeReservieren liefert für Reihe D Plätze 1-2 die Reservierungsnummer: " +demo.festePlaetzeReservieren('D', 1, 2) );
		demo.debugPrint();
		System.out.println("Der Anteil der freien Plätze ist: " + demo.anteilFreiePlaetze()*100 + "%");
		System.out.println("Die Methode bezahleReservierung liefert für Reservierung 7: " +demo.bezahleReservierung(7) );
		System.out.println("Die Methode bezahleReservierung liefert für Reservierung 1: " +demo.bezahleReservierung(1) );
		demo.debugPrint();
		System.out.println("Die Methode naechsteReservierungsnummer liefert: " + demo.naechsteReservierungsnummer());
		System.out.println("Die Methode effizienteReservierung liefert für 6 Leute die Reservierungsnummer: " +demo.effizienteReservierung(6) );
		demo.debugPrint();
		System.out.println("Die Methode effizienteReservierung liefert für 100 Leute die Reservierungsnummer: " +demo.effizienteReservierung(100) );
		demo.debugPrint();
		System.out.println("Nach dem Aufruf der Methode neueVorstellungVorbereiten sieht der Kinosaal wieder so aus:");
		demo.neueVorstellungVorbereiten();
		System.out.println("Nach zwei Reservierungen:");
		demo.festePlaetzeReservieren('A', 1, 3);
		demo.festePlaetzeReservieren('D', 4, 7);
		demo.debugPrint();
		System.out.println("Die Methode knoblauchReservierung liefert für 4 Leute die Reservierungsnummer: " +demo.knoblauchReservierung(3) );
		demo.debugPrint();
	}

}
 
Zuletzt bearbeitet:
Hier mal ein paar Schubser:
Du kannst einen char in einen int Wert umwandeln bzw. in seinen ASCII Wert. Der Ascii Wert für 'A' ist 65, für 'Z' 90. 'A' steht für die 1. Reihe (also mit dem Index 0), der Platz Z5 gehört zu kinosaal[90-65][5-1].
Um die nächst höhere Reservierungsnummer zu bekommen, musst du wohl oder übel über alle Plätze drübergehen und dir die hinterlegten Werte an der jeweiligen Reihen- und Platzadresse anschauen. Ist der Wert größer als 0, aber kleiner als Integer.MAX_VALUE, liegt für diesen Platz eine noch nicht bezahlte Reservierung vor. Diese Nummer musst du mit einer gemerkten maximalen Reservierungsnummer vergleichen. Ist der Wert größer als die bisher größte Reservierungsnummer, wird der aktuelle Wert zur neuen größten Reservierungsnummer. Wenn du durch alle Plätze durch bist, musst zur größten Reservierungsnummer eins addieren und den Wert dann zurückgeben.

Um eine Reservierung für mehrere Sitzplätze durchzuführen, musst du zunächst schauen, ob der Wert für alle gewünschten Plätze 0 ist. Wenn ja, berechnest du die Reservierungsnummer (s. o.), schreibst sie in das Array und gibst sie dann zurück.

Finde ich übrigens eine ganz hübsche Aufgabe.🙂
 

Zurück
Oben