Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
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...
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 ?
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?
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:");
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...?
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"));
}
}
}
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.
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...