Java: readDouble-Methode?

5 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Du sollst keine eigene Methode schreiben, sondern eine bereits vorhandene Klasse nutzen.

Binden Sie die „IO-Klasse“ In.java in Ihr Projekt ein.

Wie du die erforderlichen Daten nun in dein Projekt bekommst, ist einerlei. Entweder du kopierst die Datei ins Projektverzeichnis (vermutlich wird sie dann schon erkannt), du nutzt die Import-Funktion der IDE (siehe hier bspw. für Eclipse) oder du legst eine neue Klasse In an und kopierst den Inhalt der vorgegebenen In-Klasse einfach nur in diese herüber.

Wie die readDouble-Methode funktioniert, wird dann auch am Code oder mithilfe deiner Schulmaterialien ersichtlich werden. Ich vermute, dass der String, der übergeben wird, eine Art Einleitungstext für den Nutzer ist. Heißt, im Programm sieht es dann so aus:

// main:
double number = In.readDouble("Bitte geben Sie eine Zahl ein:");

Alles Weitere sollte dann kein Problem mehr für dich darstellen.

Was spricht denn dagegen, einen Scanner zu benutzen? readDouble etc. benutzt man soweit ich weiß nur bei InputStreams.


ghkshweu123 
Fragesteller
 09.10.2019, 20:45

verpflichtend in einer aufgabe... leider ohne erklärung

0
ghkshweu123 
Fragesteller
 09.10.2019, 20:48
@Blvck

Binden Sie die „IO-Klasse“ In.java in Ihr Projekt ein.

Statt hart codierter Werte möchten wir die Zahlen für Gewicht und Größe interaktiv über die Konsole einlesen.

Hierzu verwenden wir die IO-Methode In.readDouble(“Bitte Wert für … eingeben“); 

geht um einen BMI Rechner. mit scannen ist das in 2min runter aber ich raff dieses readDouble nicht

0
Blvck  09.10.2019, 20:51
@ghkshweu123

Und hast du diese IO Klasse eingebunden? Falls ja, kannst du (so wie ich das interpretiere) dann statt des Scanners IO.readDouble() benutzen.

0
Blvck  09.10.2019, 20:57
@ghkshweu123

Ja dann musst du die Klasse IO importieren... Eine "offizielle" IO Klasse mit solchen Methoden gibt es nicht, also wird euer Lehrer/Dozent/was auch immer die wahrscheinlich selber programmiert und euch zur Verfügung gestellt haben.

0
ghkshweu123 
Fragesteller
 09.10.2019, 20:59
@Blvck

inwiefern importieren? ich kann diese IO-klasse in java öffnen, das wars. da stehen dann einige methoden drin.

0
Blvck  09.10.2019, 21:03
@ghkshweu123

Wenn diese Klasse im gleichen Paket ist wie deine Klasse, sollte das eigentlich schon reichen

0

Du rufst mmn mit dem return die Funktion readDouble() mit dem Parameter "" wieder neu auf. Des ist quasi ne Endlosschleife, deswegen stack overflow. Bin aber bei Java etwas aus der Übung.


ghkshweu123 
Fragesteller
 09.10.2019, 20:36

ja aber dann müsste ich ja eine variable erstellen in der ich den wert der durch readDouble geholt wurde speichere, um DIE dann zu returnen oder!?

0
jort93  09.10.2019, 20:40
@ghkshweu123

ReadDouble holt keinen Wert, woher auch. Das bekommt nur den Parameter vom Funktionsaufruf.

0
ghkshweu123 
Fragesteller
 09.10.2019, 20:42
@jort93

readDouble()

Liest eine 

Double

zahl von der Tastatur ein.

steht so in einem pdf einer HS verstehe das nicht ganz..

0
skipworkman  09.10.2019, 20:43
@ghkshweu123

Wenn du das "" zurück haben willst, dass hast du ja im Aufruf übergeben und im String string gespeichert. Versuche mal return string

0
jort93  09.10.2019, 20:44
@ghkshweu123

Nein, tut sie nicht.

Du hast die Funktion ja selbst geschrieben. Die tut nur das was du da reinschriebst.

0
skipworkman  09.10.2019, 20:49
@ghkshweu123

Also was du bis jetzt gemacht hast, sysout ruft readDouble auf und übergibt die gänsefüße an die methode readD., readD ruft sich über das return immer wieder selber auf, das ist eine rekursion ohne abbruchsbedingung.

0

Was soll die methode den tun? Deine readDouble Methode macht nichts weiter als sich selbst unendlich oft aufzurufen. Weil sie sich unendlich oft selbst aufruft hast du einen Stack overflow.

Wenn ich nicht weiß was die Methode tun soll, und die Methode aktuell rein gar nichts tut kann ich dir nicht helfen.


ghkshweu123 
Fragesteller
 09.10.2019, 20:43

also eigentlich soll sie einzig und allein eine eingabe ermöglichen

0
ghkshweu123 
Fragesteller
 09.10.2019, 20:43
@ghkshweu123

bzw eine zahl der tastatr einlesen aber das hört sich für mich sehr ähnlich an

0
jort93  09.10.2019, 20:45
@ghkshweu123

Na dann musst du da einen Scanner implementieren oder so. Gibt ja z.B. java.util.Scanner.nextDouble(), oder du liest ne Zeile ein und parst selbst.

Die Methode hast du ja selbst geschrieben, die tut auch nur was du da reinschriebst. Und aktuell tut sie halt nichts.

0
ghkshweu123 
Fragesteller
 09.10.2019, 20:46
@jort93

Richtig. Leider bringen mich solche Antworten der Lösung nicht näher.

0
jort93  09.10.2019, 20:48
@ghkshweu123

Ja dann solltest du uns aber die Aufgabe zeigen. Denn aktuell tut deine Methode nichts, also schwer zu helfen.

0
ghkshweu123 
Fragesteller
 09.10.2019, 20:51
@jort93

einen Bmi rechner statt hard coded, interaktiv gestalten. also gewicht und größe selber eingeben können. mit IO methode.

0
jort93  09.10.2019, 20:55
@ghkshweu123

Ja dann ist es doch klar. Dann musst du in die Methode einen scanner, input stream Oder so einbauen.

Du solltest eine Methode haben die die Werte einliest, und eine die rechnet und ausgibt.

0
ghkshweu123 
Fragesteller
 09.10.2019, 20:57
@jort93

hab ich auch schon überlegt,falls das wirklich der fall ist, dient heute abend das Strick. 3 stunden versucht das readDouble als eingabeaufforderung zu schreiben

0
jort93  09.10.2019, 21:02
@ghkshweu123

Du kannst auch einen buffered reader Input stream nehmen.

Aber ein Scanner macht mehr Sinn imho.

1
ghkshweu123 
Fragesteller
 09.10.2019, 21:04
@jort93

jou den buffered muss man glaube ich nehmen..

0

Was um alles in der welt willst du machen die methode ergibt kein sinn


ghkshweu123 
Fragesteller
 09.10.2019, 20:57

das denke ich schon die letzten 3 h

1
ghkshweu123 
Fragesteller
 09.10.2019, 21:00
@Huhngut

Statt hart codierter Werte möchten wir die Zahlen für Gewicht und Größe interaktiv über die Konsole einlesen.

Hierzu verwenden wir die IO-Methode In.readDouble(“Bitte Wert für … eingeben“); 

es geht um einen bmi rechner

0
Huhngut  09.10.2019, 21:05
@ghkshweu123

Warum hast du das geschrieben

private static double[] readDouble(String string) {
    return readDouble(" ");
}
0
ghkshweu123 
Fragesteller
 09.10.2019, 21:08
@Huhngut

stand so ähnlich im skript, hat nicht funktioniert ergo hab ich es verzweifelt versucht umzuändern

0
Huhngut  09.10.2019, 21:10
@ghkshweu123

Ok also erstmal das ist ne dauerschleife deswegen stackoverflow

Aber du kannst den teil doch einfach weglassen da es doch schon die methode gibt

0
ghkshweu123 
Fragesteller
 09.10.2019, 21:12
@Huhngut

funktioniert nicht.. ich werde mich jetzt erstmal abmachen, vielleicht raff ichs ja morgen. Danke!

0
ghkshweu123 
Fragesteller
 09.10.2019, 21:14
@Huhngut

Statt hart codierter Werte möchten wir die Zahlen für Gewicht und Größe interaktiv über die Konsole einlesen.

Hierzu verwenden wir die IO-Methode In.readDouble(“Bitte Wert für … eingeben“); 

das ist die konkrete aufgabenstellung. der bmi rechner soll einfach den bmi ausrechnen (lul) und nicht hardcoded sondern eben interaktiv nutzbar sein => gewicht und größe selber eingeben können übers terminal

0
Huhngut  09.10.2019, 21:28
@Huhngut

Ne sorry das ist die dümmste aufgabenstellung überhaubt da helfe ich nicht

frag mal deinen lehrer warum nicht scanner

1