Array nimmt Variabel nicht an

grenzreiter

Mitglied
Hallo,

ich habe ein kleines Problem. Ich bin gerade am Programmieren eines Reservierungssystems für Busse. Da ich dann die Personen auf die Plätze verteilen möchte, dachte ich mir, nimm ein Array her, das geht sicher. Ich programmier das alles runter, bis eben zum Array. Das erkennt nicht, dass es die Größe des Buses (die Anzahl der Sitze) als Anhaltspunkt nehmen soll, obwohl ich sie einen Schritt vorher bereits zugewiesen habe.

Java:
import javax.swing.JOptionPane;

public class Busreservierungssystem {

	// Autor: -----
	// Version 1.0, 21.05.2011

	public static void main(String[] args) {

		int iBusSize = 0;
		System.out.println("Willkommen zum Busreservierungssystem der Firma BusReisen.");
		
		do {
			
		String iBusCat = JOptionPane.showInputDialog("Geben Sie bitte eine Kategorie an.");
		int iCategory = Integer.parseInt(iBusCat);
		
		if (iCategory == 1) {
			iBusSize = 15;
		}
		if (iCategory == 2) {
			iBusSize = 20;
		}
		if (iCategory == 3) {
			iBusSize = 30;
		}
		} while (iBusSize <= 0);
	}
	int[] SaPassenger = new int[iBusSize];
}

Das Array erkennt einfach nicht, dass iBusSize gerade zugewiesen wurde. Aber vielleicht bin ich nur zu doof und habe irgendetwas übersehen...

Gruß

grenzreiter
 
naja [c]iBusSize[/c] ist nur innerhalb der main-Methode gültig! Dein Array deklarierst du aber außerhalb (schaue dir die Klammern an) ! Vermutlich wolltest du das Array auch innerhalb der Methode anlegen, nicht außerhalb ?
 
...ACH KOMM!!! Mann...Danke. Nur noch eine Frage: Wie mache ich es am geschicktesten, dass jetzt die Namen nacheinander auf die Sitze verteilt werden?

Danke

grenzreiter
 
Ich würde die Namen am besten über eine externe Datei ordnen. Also z.B. eine Textdatei. Das lässt sich sehr einfach handhaben. Dort wird dann die Datei zeilenweise ausgelesen, wobei ein Name pro Zeile steht. Dann löst du es per while Schleife. Die komplette Syntax weiß ich leider momentan nicht mehr auswendig. Findest du aber in der API.

So etwa sollte es aussehen:
Java:
int i=0;
while (nochnichtdurch){ // Dauer des Schleifendurchlaufs (solange es noch Zeilen gibt, die ungleich NULL sind.
SaPassenger[i] = ... .readLine(); // Zeilenweise wird der Wert in ein Array geschrieben
i++; // Variable wird hochgezählt
}
 
Wollte das jetzt durch eine Zählschleife lösen und zwar so

Java:
int[] SaPassenger = new int[iBusSize];
		
		int i = 0;
		for ( i=0; i<iBusSize; i++ )
		{
			SaPassenger[(i-1)] = String.valueOf(JOptionPane.showInputDialog("Bitte geben sie die Person auf Platz "+i+" ein:"));
		}

Aber jetzt sagt Eclipse "cannot convert from String to int". Was mache ich hier denn schon wieder falsch?
 
Java:
a) int i = 0;
ist bei einer For-Schleife nicht notwendig
b) Willst du einen negativen Index bescheiben? Sollte es nicht eher SaPassenger[i] heißen? Was hast du mit dem (i-1) vor?
c) SaPassenger[i] = JOptionPane..showMessageDialog("Bitte geben sie die Person auf Platz "+i+" ein:");
 
Irgendwas mache ich falsch

Java:
SaPassenger[i] = JOptionPane.showInputDialog("Bitte geben sie die Person auf Platz " + i + " ein");

Er nimmt noch hier das Array mit der Anzahl an Sitzplätzen. Dann wird der User aufgefordert die Namen der Reihe nach einzugeben. Passt doch alles. Warum sagt der mir dann immer noch cannot convert...?
 
Hallo,

weil dein SaPassenger array vom typ int ist und das Optionpane String liefert.

Nutze Integer.valueOf( ... JOptionPane ...);
 
Jetzt bin ich aber endgültig am Ende. Warum gibt er mir jetzt folgendes aus:

Exception in thread "main" java.lang.NumberFormatException: For input string: "Peter"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:449)
at java.lang.Integer.valueOf(Integer.java:554)
at Busreservierungssystem.main(Busreservierungssystem.java:34)

Ich glaub ich raffs einfach nicht mit dem Programmieren...

Der Code bis jetzt:

Java:
public class Busreservierungssystem {

	// Autor: -----
	// Version 1.0, 21.05.2011

	public static void main(String[] args) {

		int iBusSize = 0;
		System.out.println("Willkommen zum Busreservierungssystem der Firma BusReisen.");
		
		do {
			
		String iBusCat = JOptionPane.showInputDialog("Geben Sie bitte eine Kategorie an.");
		int iCategory = Integer.parseInt(iBusCat);
		
		if (iCategory == 1) {
			iBusSize = 15;
		}
		if (iCategory == 2) {
			iBusSize = 20;
		}
		if (iCategory == 3) {
			iBusSize = 30;
		}
		} while (iBusSize <= 0);
		
		int[] SaPassenger = new int[iBusSize];
		
		int i;
		for (i=0; i<iBusSize; i++ )
		{
			SaPassenger[i] = Integer.valueOf(JOptionPane.showInputDialog("Bitte geben sie die Person auf Platz " + i + " ein"));
			
		}
		
	}
	
	}
 
Eine Frage zu den Arrays noch.

Im Programm kann man jetzt dann nach Personen und Platznummern suchen. Aber ich weiß nicht, wie ich das Array auslesen kann, dass wenn ich eine Person eingeben, das Array durchsucht wird, und dann genau die Sitzplatznummer mit dem dazugehörigen Namen ausgegeben wird. Und bei den Nummern, mit denen nach dem Namen gesucht wird und die Nummer ausgegeben wird, hab ich das gleiche Problem. Für einen Denkanstoß wäre ich dankbar.

Gruß

grenzreiter
 
Ist doch immer die gleiche Prozedur!

Du suchst den Namen:

Mit einer for-Schleife von i=0 bis i=Arraylänge-1 und schauen ob an Position i der gesuchte Name steht, wenn ja, i(Position) +Namen ausgeben.

Andersherum genauso, wo genau hast du jetzt Probleme? Wie sieht dein Versuch aus?
 
Java:
	if (SearchMode.equals("S"))
			{
				String sName = JOptionPane.showInputDialog("Geben Sie bitte den Namen ein");	
				for(i=0;i<=iBusSize;i++)
				{
					sName.equals(SaPassenger);
					System.out.println(sName + " sitzt auf Platz " + (i+1));
				}

Ich glaube, dass ich gerade total auf dem Schlauch stehe...

Gruß

grenzreiter
 
Na du musst natürlich mit der Person an Stelle i vergleichen, nicht mit dem Array 🙂
sName.equals(SaPassenger); ---> SaPassenger !!!!

Und irgendwie fehlt da auch eine if-Abfrage oder ???:L
 

Neue Themen


Zurück
Oben