Java Variable ausgbeben ohne System.out.println Befehl

jonesjunior

Lt. Commander
Registriert
Okt. 2008
Beiträge
1.699
Hallo,

ich komme bei folgender Aufgabe nicht weiter:

Schreiben Sie ein Programm, welches von der Nutzerin bzw. vom Nutzer – analog zu Aufgabe p9) – zunächst fu ̈nf Varia- blen von unterschiedlichen Typen einliest. Nehmen Sie dies bitte fu ̈r folgende Datentypen vor:
short, int, long, float, double
Speichern Sie den Wert der Variable vom Datentyp short in einer neu deklarierten Variable vom Typ double. Geben Sie dann beide Werte aus – zuerst den urspru ̈nglichen und dann den umgewandelten. Beides soll in derselben Zeile ausgegeben werde, OHNE den System.out.print-Befehl zu verwenden. Wiederholen Sie diesen Schritt fu ̈r die verbleibenden vier Variablen, jedoch OHNE eine neue Variable einzufu ̈hren.
Die Ausgabe Ihre Programms ko ̈nnte z.B. so aussehen:
Programm wird ausgef ̈uhrt ...
Bitte einen short-Wert eingeben: 1
Bitte einen int-Wert eingeben: 1000
Bitte einen long-Wert eingeben: 1000000000000
Bitte einen float-Wert eingeben: 10000000000000f
Bitte einen double-Wert eingeben: 3.345345345


1 / 1.0
1000 / 1000.0
1000000000000 / 1.0E12
9.9999998E12 / 9.999999827968E12
3.345345345 / 3.345345345
Programm beendet

Meine bisherige Lösung:

import Prog1Tools.IOTools;

public class Typecasts
{
public static void main (String [] args)
{
short s = IOTools.readShort("Bitte einen short-Wert eingeben:");
int i = IOTools.readInt("Bitte einen int-Wert eingeben:");
long l = IOTools.readLong("Bitte einen long-Wert eingeben:");
float f = IOTools.readFloat("Bitte einen float-wert eingeben:");
double d = IOTools.readDouble("Bitte einen double-Wert eingeben:");

Jedoch weiß ich jetzt nicht, wie ich diese Werte ohne den System.out.println Befehl ausgeben kann.
Die Umwandlung wollte ich mit einem Typecast z.B. s = (double) x vornehmen. Ich verstehe an der Stelle auch nicht, wie ich das alles mit einer Variable ausgeben kann...

Hättet ihr eine Idee für mich als Java Neuling?
Danke im Voraus!

Mfg
Jones
 
jonesjunior schrieb:
Jedoch weiß ich jetzt nicht, wie ich diese Werte ohne den System.out.println Befehl ausgeben kann.

Ausgeschlossen ist System.out#print, ergo darfst Du System.out#println verwenden.
 
printf oder ein Logging Framework nutzen. z.B. Log4j

Außerdem sollst du keine neue Variable einführen. Daher müsstest du mit einer Schleife arbeiten. Deine Variable müsste dann vom Typ String oder Object sein.
 
Zuletzt bearbeitet:
Oder
Code:
System.err.println();
:evillol:
 
da steht ja nicht wo das ausgegeben werden soll, brat das in ne .txt oder ähnliches :-)
 
Mir fällt grad auf, dass du bei einer Schleife die Ein- /Ausgaben irgendwo zwischenspeichern musst. z.B. in einem StringBuilder oder einer Collection. Das Problem ist, dass dazu wieder eine neue Variable benötigt wird.
 
alternative wäre ein stream.

BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(java.io.FileDescriptor.out), "ASCII"), 512);
out.write("asdf");
out.flush();

(oder so ähnlich, google hilft)
sollte sogar performanter sein.
 
Woher kommt denn die Aufgabe? Aus einen Tutorial oder von einem Lehrer?

Auf jeden Fall wird der Tutorialschreiber/Lehrer eine bestimmte Ausgabe-Art vorgesehn haben. Ich an deiner Stelle würde mal das letzte Kapitel im Tutorial nachlesen oder das letzte Arbeitsblatt durchsuchen und nach einem Ausgabe-Befehl ausschau halten ;-)

Falls die Aufgabe zum Kreativ-Werden gedacht ist, hast du ja schon genügend Möglichkeiten aufgezählt bekommen ^^
 
Danke für eure Antworten.
Das Ganze soll im Konsolenfenster einer einfachen Programmierumgebung ausgegeben werden.
Die Lösung müsste eigentlich relativ simpel sein, da wir erst wenige Vorlesungen hatten und somit keine Sachen wie Streams vorkommen können.

Ausgeschlossen ist System.out#print, ergo darfst Du System.out#println verwenden.
Hm eigentlich hast du Recht, aber ich glaube, dass die damit schon beides meinen. Wie würde es mit diesem Befehl aussehen?
Könnte ich dann s= (double) x schreiben und diese damit ausgeben? Problem wäre dann trotzdem, dass ich alles mit dieser einen Variable ausgeben müsste.

@nintendoluk: Gute Idee, bei der Aufgabe davor mussten wir Variablen tauschen, z.B.

int c = y;
y = x;
x = c;

In den Vorlesungen wurden letztens if else, switch, while, do und for eingeführt. Mehr habe ich nicht zur Verfügung ;)
 
Zuletzt bearbeitet:
Sehr seltsam formulierte Aufgabe. Ich verstehe es so: Du sollst zuerst die 5 Zahlen in unterschiedlichen Datentypen einlesen.. hast du schon gemacht. Danach sollst du EINE double-Variable deklarieren und dann nacheinander die eingelesenen Zahlen jeweils als eingelesener Datentyp und double ausgeben. Dass du Syste.out.print() nicht verwenden darfst verbietet ja nicht den Einsatz von println()...

Ich denke, die Lösung wäre folgende:
Code:
public static void main(String[] args) {
  short s = IOTools.readShort("Bitte einen short-Wert eingeben:");
  int i = IOTools.readInt("Bitte einen int-Wert eingeben:");
  long l = IOTools.readLong("Bitte einen long-Wert eingeben:");
  float f = IOTools.readFloat("Bitte einen float-wert eingeben:");
  double d = IOTools.readDouble("Bitte einen double-Wert eingeben:");

  double mDouble = (double) s;
  System.out.println(s + " / " + mDouble);

  //ab jetzt kannst du ja mDouble wiederverwenden
  mDouble = (double) i;
  System.out.println(i + " / " + mDouble);

  //usw...
}
 
jonesjunior schrieb:
In den Vorlesungen wurden letztens if else, switch, while, do und for eingeführt. Mehr habe ich nicht zur Verfügung ;)

Ihr habt noch nie Ausgaben gemacht?
Dann isses ne Kreativ-Aufgabe und kannst meiner Ansicht nach alles hernehmen.

Ich würd println benutzen...

@NiThDi:
Wie soll jonesjunior was lernen wenn du ihm alles so genau vorkaust? ;-)
Ich glaube das '+' könnte auch genau das gewesen sein, worauf sein Lehrer hinaus wollte ^^
 
Zuletzt bearbeitet:
jonesjunior schrieb:
Das Ganze soll im Konsolenfenster einer einfachen Programmierumgebung ausgegeben werden.

Hm also ohne System.out irgendwas auf der Konsole auszugeben, ist nicht wirklich trivial.
Geht, siehe Beispiel auf Stack overflow. Aber spätestens wenn Du schreibst:
jonesjunior schrieb:
Die Lösung müsste eigentlich relativ simpel sein, da wir erst wenige Vorlesungen hatten und somit keine Sachen wie Streams vorkommen können.

Hat sich das aus meiner Sicht echt erledigt.

Ich lese das auch so: Schreibe die Zeilen raus, ohne System.out.print zu verwenden!
Der Punkt hier ist ja: System.out.print kannst Du mehrfach hintereinander ausführen, um mehrere Ausgaben in der selben Zeile zu machen. Also zum Beispiel:
Code:
System.out.print(originalWert);
System.out.print(" / ");
System.out.println(gecasteterWert); // erst hier wird der Zeilenumbruch gemacht

Aber genau das Selbe lässt sich ja auch erreichen mit:
Code:
System.out.println(originalWert + " / " + gecasteterWert);

Hoffe das hilft..
 
jonesjunior schrieb:
Hm eigentlich hast du Recht, aber ich glaube, dass die damit schon beides meinen. Wie würde es mit diesem Befehl aussehen?

Wenn Dir die Frage nicht eindeutig genug formuliert ist, frag doch einfach beim Aufgabensteller nach. Für mich gibt es hier keinen Zweifel, was nicht ausschließt, dass der Aufgabensteller eine andere Intention hatte.

Vielleicht soll durch das Ausschließen erzwungen werden, dass die Werte irgendwo zwischen gespeichert werden. Mittels System.out#print könnte man die Werte jeweils sofort ausgeben und hätte trotzdem alles in einer Zeile.

Eine Lösung poste ich nicht, da Hausaufgabe.
 
nintendoluk schrieb:
Ihr habt noch nie Ausgaben gemacht?
Dann isses ne Kreativ-Aufgabe und kannst meiner Ansicht nach alles hernehmen.

Ich würd println benutzen...

Doch haben wir, ich habe jedoch nach einer Alternative für den System.out Befehl gesucht und das Umwandlungsprinzip war mir noch nicht ganz klar.
Vielen Dank NiThDi, so werde ich es probieren. Diese Aufgabenstellung ist aber bezogen auf den Ausgabebefehl echt etwas merkwürdig. :D
 
Wie schon oben Angedeutet ist glaub ich der Knackpunkt der Aufgabe, dass mehrere Werte in einer Zeile angezeigt werden sollen.

Man könnte dazu mehrere System.out.print() hernehmen, oder aber ein einziges System.out.pringln(), wobei hier die einzelnen Werte mit einem + getrennt Werden müssen. Und das muss so platziert sein, dass die Zahlen nicht zusammengerechnet werden ^^
 
Alles klar, danke.
Es ist übrigens keine Hausaufgabe mit Lehrer, sondern gehört zum Selbststudium. Daher war es mir besonders wichtig, dies zu verstehen.
 
nintendoluk schrieb:
@NiThDi:
Wie soll jonesjunior was lernen wenn du ihm alles so genau vorkaust? ;-)
Ich glaube das '+' könnte auch genau das gewesen sein, worauf sein Lehrer hinaus wollte ^^

Grundsätzlich hast du Recht :) Allerdings lernt man auch bei dem Versuch, fertigen Quelltext zu verstehen. Mit unter kommt dabei sogar mehr rum :)
 
Zurück
Oben