Fahrradverwaltung

Derber02

Mitglied
Java:
*Funktion: Buchung eines fahrrades durch kunde. Er kann anfrage auf Farbe stellen. Durch Prüfung des tages und dafür
	 *			gegebene Datenstruktur wird ausgeben ob es in ordnung ist oder nicht. 
	 */
import java.util.Scanner;

public class verfuegbarkeitFahrrad {
	
	public static class Verfuegbarkeit{
		 static String tag;
		 static int anzahlFahrraeder;
		 
	}
	public static Verfuegbarkeit einlesenVonBenutzer{
		Verfuegbarkeit verfuegbarkeit = new Verfuegbarkeit();
		System.out.println("Geben Sie den Tag an:");
		Scanner reader = new Scanner(System.in);
		Verfuegbarkeit.tag = reader.next();
		System.out.println("Wie viele Fahrraeder moechten Sie haben?");
		Verfuegbarkeit.anzahlFahrraeder= reader.nextInt();
		Verfuegbarkeit verfuegbarkeit = vergleichenMitWerte();
		
	}
	public static Verfuegbarkeit vergleichenMitWerte{
		if (einlesenVonBenutzer.anzahlFahrraeder < montag.anzahlFahrraeder){
			
	}
	public static Verfuegbarkeit montag(){
		static int anzahlFahrraeder = 4;
		static int vermieteteFahrraeder = 6;
		return verfuegbarkeit;
		
	}

if (einlesenVonBenutzer.anzahlFahrraeder < montag.anzahlFahrraeder){

wie kann ich diese zeile ersetzen anscheinend geht das nicht?
also integer zu boolean. ich will eben dass der benutzer eine zahl eingibt .. diese zahl kontrolliert wird mit verfuegbarkeit montag "anzahlfahrraeder" ..
 
Zuletzt bearbeitet von einem Moderator:

Timothy Truckle

Top Contributor
if (einlesenVonBenutzer.anzahlFahrraeder < montag.anzahlFahrraeder){

wie kann ich diese zeile ersetzen anscheinend geht das nicht?
Geht schon, aber nicht mit diesem Ansatz.

Schau doch nochmal in Deine Unterlagen, was in Java eine Klasse und was ein Objekt ist, wozu Methoden da sind und wie man Parameter benutzt. Von den vielen
Code:
static
Schlüsselwörtern werd ich ja ganz depressiv...

also integer zu boolean. ich will eben dass der benutzer eine zahl eingibt .. diese zahl kontrolliert wird mit verfuegbarkeit montag "anzahlfahrraeder" ..
Im Prinzip würde Dein Code das tun, wenn er kompilierbar wäre...

bye
TT
 

Helgon

Bekanntes Mitglied
Die Methode gibt doch auch nix aus? Was soll die den großartig machen.

Wenn etwas nicht stimmen würde, hätte die IDE dich schon darüber benachrichtigt..
 
H

hüteüberhüte

Gast
Java:
*Funktion: Buchung eines fahrrades durch kunde. Er kann anfrage auf Farbe stellen. Durch Prüfung des tages und dafür
     *          gegebene Datenstruktur wird ausgeben ob es in ordnung ist oder nicht. 
     */

...und jetzt nochmal auf deutsch.
 

Derber02

Mitglied
ok ich habe mal ganz von neu angefangen
Java:
public class FahrradReservierung {

	/**
	 *  Funktion: Ein Ablauf einer
	 *         Reservierung von Fahrräder zu bestimmter Zeit durch ein Kunde.
	 *         Das Programm soll ueberpruefen ob das angegebene Datum des Kunden
	 *         mit der Instanz der Fahrräder übereinstimmen bzw. die Daten die
	 *         der Kunde eingibt erfolgreich reserviert werden können. Wenn es
	 *         der fall wird dass es nicht geht sollte das ganze zurueck
	 *         staniert werden.
	 * 
	 */
	public static class Bikes {
		static state State;
		static String[] reserveDate = new String[364];

	}

	public static enum state {
		FREE, RESERVED, MAINTENANCE
	}

	public static class ReserveDate {

	}

	public static class BikeFunktions {
		public static BikeFunktions rentBike(Bike eingabe1, String datum1) {
			// ToDo: hier fehlt noch eine Funktion die die eingaben der daten in
			// dem Array reserveDate speichert!
			if (bestimmterbike.State == state.MAINTENANCE || bestimmterbike.State == state.RESERVED) {
				// bestimmterbike = das fahrrad das ausgewaehlt wurde - muss
				// noch initialisert werden
				System.out.println(" Das Fahrrad ist leider nicht verfuegbar bitte ein anderes auswaehlen");
			} else {
				System.out.println(" Das Fahrrad "+bestimmterbike + "kann und wird reserviert!");
				Bikes.reserveDate = BikeFunktions.rentBike(null, datum1);

doch jetzt hab ich das problem .. bzw. ich weiß gar nicht wie kann ich den die reservierung (datum) in den array reinspeichern?
 
S

SlaterB

Gast
Neuanfang ist lobenswert, aber immer der Reihe nach,
wie soll man die Methode rentBike() bestimmen wenn die Klasse Bike noch nicht klar ist?
dir vielleicht schon, sie zu posten kann nicht schaden

wofür ist die Klasse Bikes? paar statische Variablen kannst du doch auch in FahrradReservierung ablegen,
[c]static state State;[/c] ist bemerkenswert schlecht, warum nicht an Klassenname groß, Variablenname klein halten?

was soll dieser eine statische State aussagen?
wenn du für jedes Fahrrad einen Status haben willst, dann brauchst du eine nicht-statische Variable in Bike,
oder falls die Bike-Klasse frei von der Verwaltung sein soll dann brauchst du immer noch mehrere Informationen, je Bike einzeln,
ein Array von State oder eigene Klasse 'Reservierungseintrag mit Bike + State' oder anderes

zu rentBike():
Rückgabewert ist im Moment BikeFunktions, wieso?
das muss doch grundsätzlich eine Begründung haben

[c]Bikes.reserveDate = BikeFunktions.rentBike(null, datum1);[/c]
sieht dann übel aus, wie soll das zurückgegebene BikeFunktions-Objekt, wozu auch immer ein solches Objekt erzeugt wird, Code dazu gibts ja auch nicht, in einer Variablen String[] abgelegt werden?

bestimmterbike wird in der Methode verwendet, was ist das für eine Variable? das Parameter-Bike heißt eingabe1..,


angesichts solcher Punkte lohnt sich der Hinweis doch lieber bisschen weniger Code zu programmieren,
mache dir erstmal klar was passieren soll, was das Ziel ist,
jede Zeile oder eingebauter Rückgabewert sollte sich auch mit Worten begründen lassen, sonst vorerst drauf verzichten

Java:
public static void rentBike(Bike eingabe1, String datum1) {
}
wäre eine reichlich langweilige Methode, aber zumindest ohne Fehler, ein Ausgangspunkt von dem man etwas erreichen kann,
könnte in einer Konkurrenz zu deiner bisherigen Methode durchaus gewinnen

-------

mit Datum, vielleicht noch Vergleich von Tagen usw. wird es kompliziert,
bleibe erstmal bei einem Programm mit mehreren Bikes, die man reservieren/ zurückgeben? kann usw.,
einfach nur 'ist es frei oder nicht frei', das scheint schon Problem genug
 
Zuletzt bearbeitet von einem Moderator:

Derber02

Mitglied
Static state State
das hab ich so hingeschrieben weil es für state bestimmte aufzählungen gibt "FREE, RESERVED, MAINTENANCE"
anderst zeigt es mir komischerweiße als fehler an

bestimmterbike
ich will das so programmieren dass der benutzer eingibt was er für ein bike will und wenn das bike
frei ist soll er das datum in datum1 speichern und das sollte dann in array gespeichert werden
aber das ist glaub viel zu hoch für mich. ich schreib morgen ein testat für programmieren
brauch halt mehr als ein viertel der punkte und ich denk wenn ich das so grob hinschreib und der rest einigermaßen
stimmt bestehe ich es auch wenn es "falsch" ist. ich werd das natürlich danach noch weiter programmieren und
fehler ausverbessern!

danke für diesen tipp mit Void!
doch ich will das datum das als string eingegeben wird .. z.b. zweitezweite in den array speichern.
kann ich das machen und wenn - wie?
 
S

SlaterB

Gast
> anderst zeigt es mir komischerweiße als fehler an

Klassen groß, Variablen klein. mit Bike funktioniert es ja anscheinend,
keine Fehlermeldung kann von solchen Grundsätzen ablenken,
wenn was nicht geht, dann poste es, frage danach,
aber ändere bitte nicht die Grundkonstanten, mit denen die Welt sich versucht zu unterhalten, dafür braucht es einen Standard

einen String kann man natürlich in einem Array speichern, so wie man jeden Wert in einem Array speichert,
da bringt die allgemeine Frage 'wie' nichts

wahrscheinlich stecken viele unausgesprochene Details dahinter z.B. welcher Array-Platz für welches Fahrrad,
solange du nur 'wie?' fragst und ich allein zur Eingrenzung der Frage 10x so viele Wörter brauche,
kann ich mir nicht vorstellen irgendwie helfen zu können
(edit: ok, den Absatz zu bestimmterbike da noch nicht gelesen, da steht ja etwas mehr)

und siehe auch letzte Zeilen in meinem letzten Posting, spät editiert:
das ganze Programm ohne Datum wäre womöglich ein besseres Zwischenziel

> ich schreib morgen ein testat für programmieren brauch halt mehr als ein viertel der punkte

von deinem jetzigen Stand scheinst du dahin einige Wochen/ Monate entfernt zu sein,
du kannst ruhig weiter normal Fragen stellen, aber erwarte bitte keine Sonderbehandlung
 
Zuletzt bearbeitet von einem Moderator:

Derber02

Mitglied
ok danke dir ich änder das gleich um zum Standard

nun da ich das datum weg lasse sollte ich zunächst im hauptprogramm die Bikes erzeugen
daher das mit dem array. ich wollte einfach im array die einzelnen bikes also 5 bikes und dazu noch 3 daten
z.b.:
name - zweirad/mountainbike/dreirad ...
state - free/reserved/maintenance
anzahl - wie viele fahrräder es von dieser art gibt

ich habe mal so angefangen doch komme schon jetzt nicht weiter.. ich hatte noch einige gedanken im kopf
hatte so ein programm schonmal in der vorlesung bei einem jungen gesehen gehabt aber nur kurz
der hat immer mit name[0] und dazu ebenb 2-3 daten und mit nächsten weiter gemacht name[1] ..

Java:
public static void main(String[] args) {
			Bikes bikes = new Bikes();
			String[] bikeArray = new String[4];
			
			bikeArray[0] = "zweiRad";
ich hoff hierzu kannst du mir auch noch ein tipp geben oder vorschlag!
vielen dank für deine bemühungen!
 
S

SlaterB

Gast
immer noch gilt: jede Zeile muss ihren Zweck haben

- main-Methode? klar, sonst Feierabend
- ein String von Strings anelegen, in Position 0 einen bestimmten Text?, da kann ich mir was zu vorstellen
- ein Bikes-Objekt? recht fraglich

im String-Array kannst du mehrere Strings sammeln, wenn das die 'Namen' von 4 Fahrrädern sein sollen, nun gut,
was ist dein Problem dabei, wo stockst du, was soll als nächstes passieren, was geht nicht?
ich sehe keine Frage

Tipp: ein Array von Bikes (also der Klasse Bike! Klasse Bikes ist nicht nötig), mit 4 erstellten Bike-Objekten befüllen
 

Derber02

Mitglied
die aufgabe lautet:
Erzeugen sie im Hauptprogramm mindestens 5 Instanzen von Bikes. Benutzen sie hierzu eine Funktion namens BikeFunktions.createBike(). Diese Funktion soll sicherstellen dass state jedes Bikes auf FREE steht und jeder Eintrag von reserveDate mit null initialisiert wird.

meine gedanken momentan
3 arrays mit 5 verschiedene daten
Java:
	public static void main(String[] args) {
			Bikes bikes = new Bikes();
			
			String[] bikeNameArray = new String[4];
			bikeNameArray[0] = "zweiRad";
			bikeNameArray[1] = "dreiRad";
			bikeNameArray[2] = "kindRad";
			bikeNameArray[3] = "babyRad";
			bikeNameArray[4] = "erwachsenenRad";
			
			String[] statusArray = new String[4];
			statusArray[0] = "free";
			statusArray[1] = "free";
			statusArray[2] = "free";
			statusArray[3] = "free";
			statusArray[4] = "free";
			
			int[] anzahlBikes= new int[4];
			anzahlBikes[0] = 4;
			anzahlBikes[1] = 5;
			anzahlBikes[2] = 3;
			anzahlBikes[3] = 7;
			anzahlBikes[4] = 8;


so jetzt mit einer funktion createBike() eine if bedingung machen und prüfen ob status free ist
dafür muss ich doch erstmal die funktion da einbinden oder?
Bikes bikes = BikeFunktions.createBike();

und bei der funktion
public static bikeFunktions CreatBike(){
if( statusArray[0]= "free"){
syso"status ist frei"
} else {
statusArray[0]= "free" ;
}

soweit alles richtig?
 
S

SlaterB

Gast
Strings vergleicht man mit equals, nicht mit ==, schon gar nicht mit dem Zuweisungsoperator =

in createBike() scheinen alle Zustände 'free' zu sein, das bietet sich für ein neues Bike sowieso grundsätzlich an,
eine if-Unterscheidung hat dort keinen Zweck, auch keine Ausgabe, wozu das alles, welcher Zweck?

eine Miss-Interpretation von "Diese Funktion soll sicherstellen dass state jedes Bikes auf FREE steht"?
entfernt denkbar, aber doch unnötig, einfach jedes Bike mit Status free erzeugen und fertig

anzahlBikes ist ein komisches Array mit Zahlen befüllt, wozu?

die Klasse Bikes ist nach wie vor höchst lösch-verdächtig, warum hälst du an dieser fest, welchen Zweck hat sie?

es ist ein allgemein häufiger Fehler, mehrere zusammengehörige Daten in verschiedenen Arrays abzulegen,
wie zu lesen gehört auch eindeutig der Status in das Bike

die Methode createBike() hat eine simple Aufgabe: 5 Bikes anlegen, das macht ca. 6 Zeilen:
Java:
Zeile 1: Bike[] b = .. // Array anlegen
Zeile 2: b[0] = new Bike(irgendein Name falls nötig, Status free, Nummer wenn nötig, was sonst noch nötig ist);
Zeile 3-6: .. // noch 4x wiederholen
Status free kann auch einfach der Default-Wert für die Variable intern sein, muss nicht als Parameter im Konstruktor übergeben werden

denke darüber nach was das ist im Gegensatz zu vorher, nun hast du endlich tatsächlich 5 Bikes,
willst du den 3. Namen, dann hole dir das 3. Bike und frage von dem den Namen ab,
du brauchst keine Arrays für alles getrennt, Bike-Objekte!

------

edit:
ok, ich habe es (auch) nicht richtig gelesen, was createBike() genau machen soll ist reichlich unklar,
besonders falls ohne Parameter, einfach nur ein Bike erzeugen?
irgendwo, meinetwegen in der main, müssen aber sicher die 5 Bikes erzeugt werden,
ob mit Konstruktor oder der create-Methode

ob sie in ein Array müssen oder getrennte Variablen ist auch nicht besonders klar,
aber eindeutig Bike-Objekte, da liege ich noch richtig
 
Zuletzt bearbeitet von einem Moderator:

Derber02

Mitglied
vielen dank für diese erklären ich komm echt voran und langsam hab ich den lauf
du erklärst alles so perfekt auch auf sowas wie "neues Bike sowieso grundsätzlich free ist" wäre ich niemals gekommen
ich glaub dass die aufgabenstellung auch nicht richtig gestellt werden bzw. find ich sie kompliziert

ich werde das aufjeden so wie du es gezeigt hast mit der methode createBike() machen.

anzahlbikes: ich wollte damit einfach frei erfinden wie viele fahrräder ich in der sorte vermieten kann/darf. später sollte ich dann eben anzahlbikes eins abziehen falls sich ergibt dass man bei der sorte des fahrrades eines reserviert.

ich hab eben "gute ideen" meiner meinung nach aber die umsetzung fehlt mir komplett. ich bin eben noch ein anfänger aber es macht mir spaß zu programmieren ist eben alles nur noch die übungssache.
 
S

SlaterB

Gast
siehe auch wiederum edit zuletzt, createBike() soll ja in der Tat nicht die 5 Bikes erstellen,
maximal eins anscheinend, seltsam auch für mich
 

Derber02

Mitglied
Wenn ich das Array machen will kommt folgendes Problem:
Bike [] b = new Bike [5];
cannot be ressolved to a type
wenn ich
Bikes [] b = new Bikes [5];
mache funktuniert es. aber weiteres problem:
Java:
b[0] = new Bikes(Bikes.name zweiRad,);
ich hab alles versucht nichts geht ... ich will in den klammern einfach den namen zweiRad haben
hab sogar bei der Methode Bikes extra string für name angelegt
kannst du dabei noch helfen?
 
S

SlaterB

Gast
nach [c]public static BikeFunktions rentBike(Bike eingabe1, String datum1) {[/c]
schien es seit 14:51 eine Klasse Bike zu geben, was ich damals schon ansprach, Code bitte,

nach allem ist langsam anzunehmen, dass es keine solche Klasse gibt, vorher kann natürlich nichts geschafft werden,
erst eine Klasse Bike, dann ein Array davon, bei Problemen näher anzuschauen

[c]new Bikes(Bikes.name zweiRad,)[/c] ist kein Java-Code,
auch schwer zu korrigieren wenn du nicht immer und immer wieder in Worten sagst, was dort passieren soll!

Bikes kommt ja eh nicht in Frage, falls es nur
Java:
    public static class Bikes {
        static state State;
        static String[] reserveDate = new String[364];
 
    }
dazu gibt, keinen Konstruktor usw.,
allein auch schon [c]Bikes.name zweiRad[/c] ist fern von allem was man sich an sinnvollen überlegen kann,
was soll da passieren? möchtest du einen String, einen Text 'zweiRad' schreiben? dann wäre das
[c]"zweiRad"[/c] und nicht [c]Bikes.name zweiRad[/c]..,
falls Bikes inzwischen ein Attribut namens 'name' hast, musst du das hier nicht erwähnen..,
im Aufruf einens Konstrutors stehen Werte,
das ist nun Grundwissen, auf diesem Niveau werde ich nicht mehr lange mitmachen

----

und unabhängig davon merke dir folgendes gut:
ich werde auf kein Posting mehr antworten (evtl. noch kleinen Hinweis nach Vergessen), welches 'Bikes' als verwendeten Java-Klassenname enthält,
in Fragen vielleicht, aber setze mir persönlich das nicht mehr unkommentiert als Code vor, schrecklich

für die Modellierung eines normalen Fahrrads nenne die Klasse Bike, keine Mehrzahl! und poste diese Klasse!
eine zweite Hilfsklasse nur mit statischen Variablen Bikes, wenn es Bike schon gibt, ist ebenso unnötig
 
Zuletzt bearbeitet von einem Moderator:

Timothy Truckle

Top Contributor
Wenn ich das Array machen will kommt folgendes Problem:
Bike [] b = new Bike [5];
cannot be ressolved to a type
wenn ich
Bikes [] b = new Bikes [5];
mache funktuniert es.
Ist ja auch wirklich blöd, dass Java darauf besteht, dass die referenzierten Klassen tatsächlich existieren...:bloed:

aber weiteres problem:
Java:
b[0] = new Bikes(Bikes.name zweiRad,);
ich hab alles versucht nichts geht ... ich will in den klammern einfach den namen zweiRad haben
hab sogar bei der Methode Bikes extra string für name angelegt
kannst du dabei noch helfen?
Leider kennt Java keine "named Parameter"
Du musst einen Konstruktor für die Klasse Bikes mit einem String-Parameter schreiben, in dem Du den Parameter der Klassenvariablen zuweist.

bye
TT
 

Derber02

Mitglied
ich kann das nachvollziehen was du meinst aber dann liegt wohl nicht an mir sondern an meinem Dozent der die testataufgaben so gestellt hat
"Erzeugen Sie eine Datenstruktur „Bikes“ mit den Eigenschaften
• state hat genau 3 Ausprägungen FREE,RESERVED,MAINTENANCE
• reserveDate hat genau 365 Datumswerte als String
"
daher "Bikes"...
ich werde mein programm neubearbeiten und hoffen dass es einigermaßen funktioniert
ich kann ja nicht schließlich alles fragen ..
 
S

SlaterB

Gast
nun gut, dann sei es so,
es liegt aber zumindest an dir, dass du das nicht eher trotz Rückfragen klärst,
zudem wie gesagt Bike in Einzahl im Code von 14:51 erwähnt

wie soll man die Methode rentBike() bestimmen wenn die Klasse Bike noch nicht klar ist?
dir vielleicht schon, sie zu posten kann nicht schaden

wofür ist die Klasse Bikes?

die Klasse Bikes ist nach wie vor höchst lösch-verdächtig, warum hälst du an dieser fest, welchen Zweck hat sie?

--------
wenn man
• state hat genau 3 Ausprägungen FREE,RESERVED,MAINTENANCE
• reserveDate hat genau 365 Datumswerte als String
liest, heißt das übrigens, dass state ein Variablenname ist genau wie reserveDate,
das kann nicht als Vorgabe einer Klasse state sein, Klassen groß schreiben
 

Derber02

Mitglied
ok ich hatte dort ein fehler .. die zeile sollte eigentlich so aussehen:
Java:
 public static class BikeFunktions {
        public static BikeFunktions rentBike(String bike, String datum) {
nun ich hoffe ihr könnt mir bei eines noch helfen ..

Java:
public static void main(String[] args) {
			
			Bikes bikes = BikeFunktions.createBike();
was muss ich hier bei den klammern reinschreiben um auf die methode von unten drauf zu greifen zu können?
ich bin seit ein paar stunden bei dem programm und bin kurz davor mich total zu verwirren.. bitte!

Java:
public static class BikeFunktions {
		public static void createBike(String name, String state){
			
			
			Bikes [] b = new Bikes [5];
			b[0] = new Bikes();
			b[1] = new Bikes();
			b[2] = new Bikes();
			b[3] = new Bikes();
			b[4] = new Bikes();
 
S

SlaterB

Gast
Java:
public static void createBike(String name, String state){
            return  new Bikes(name, state);
}

Bikes einBike = BikeFunktions.createBike("Flitzer", "free");

wenn Bikes entsprechenden Konstruktor hat, sonst anders,
state hier dann womöglich wirklich mit if zu prüfen, aber Arrays sind in createBike() nicht beteiligt, geht nur um ein Bike(s)

vielleicht auf Parameter für state verzichten, dann kann er nicht falsch werden,

wenn du eine Enum hast kannst du auf String für state komplett verzichten und Enum-Werte verwenden
 

Derber02

Mitglied
bei
Java:
return new Bikes(name, state);
kommt folgender Fehler:
void methods cannot return a value

ist das was du meinst ?

& bei dem anderen kommt dieser fehler:
cannot convert from void to FahrradReservierung.Bikes
 
S

SlaterB

Gast
tja, so ist das Leben,
in der Methode wird was zurückgegeben, ein Bikes, passt nicht zum Rückgabewert void,
der Aufrufer erwartet auch dass was zurückgegeben wird, auch Bikes, das passt schonmal zusammen,
nur dort auch das Grauen des Rückgabewertes void angemeckert

kann man da irgendwas tun? kann eine Methode einen anderen Rückgabewert als void haben?
 

Derber02

Mitglied
wenn du die fragestellung so machst .. bestimmt
aber ich weiß es echt nicht
hab grad auch schon gegoogelt. aber da kommen nur beispiele mit einem returnobjekt und da tuhen sie eben anstelle void - int oder double hin
 
G

Gast2

Gast
den namen des bikes (als String übergeben) und den Zustand des Bikes (ebenfalls als String)
Siehe die Kopfzeile der Funktion, das was dort in den Klammern steht, muss der Methode auch übergeben werden...

[EDIT]Sry, war wohl zu langsam^^[/EDIT]
 

Oben