You are not logged in.

maffe

Unregistered

1

Friday, April 21st 2006, 11:38am

Java, formatierte Ausgabe von double

Mag mir mal einer sagen, wie ich test mit 1 Nachkommastelle ausgeben kann? So wie folgt klappt es jedenfalls nicht:

Source code

1
2
3
4
5
6
7
class Test {
	public static void main(String... args) {
		double test;
		test = 4/3.0;
		System.out.printf("%.1g", test);
	}
}

This post has been edited 1 times, last edit by "maffe" (Apr 22nd 2006, 1:45pm)


Ray-D

Alter Hase

  • "Ray-D" is male

Posts: 690

Date of registration: Oct 9th 2002

Location: Zimbabwe-Island Ost Beiträge: 3.427

Occupation: Informatiker

2

Friday, April 21st 2006, 11:46am

die zahl multiplizieren mit 10^a, wobei a die anzahl der nachkommastellen ist, dann runden und dann wieder durch 10^a dividieren. beispiel:

4/3 = 1.3333333333

1.333333333* 10^1 = 13.3333333333

Math.round(13.33333333333333) = 13

13 / 10^1 = 1.3

jetzt daraus eine schöne methode machen :)

HTH

edit: bin ich wohl irgendwie ma thema vorbeigeschossen :D
"ob ich alles weiss, was wir wissen, weiss ich auch nicht, aber ich weiss natürlich niemand von uns weiss etwas was er nicht weiss" - Wolgang Schäuble
Freiheit wird nicht erbettelt, sondern erkämpft


Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von »Ray-D« (Heute, 04:29)

rad

Praktikant

  • "rad" is male

Posts: 14

Date of registration: Apr 14th 2004

3

Friday, April 21st 2006, 12:14pm


maffe

Unregistered

4

Friday, April 21st 2006, 1:53pm

Quoted

Original von rad
System.out.printf("%.1f", test);

http://java.sun.com/j2se/1.5.0/docs/api/…ter.html#syntax

Ah jo, werd das mal probieren, danke. In den Vorlesungsfolien ist %f leider nicht aufgeführt 8o

Dot

Senior Schreiberling

Posts: 618

Date of registration: Feb 3rd 2003

Location: Ex-Europameisterland

Occupation: 4TheScience

5

Friday, April 21st 2006, 4:31pm

Aber auf der Seite zur Vorlesung ;)
C:\reality.sys has errors - Reboot the universe? (Y/N)

Real programmers don't comment their code.
It was hard to write, it should be hard to understand

maffe

Unregistered

6

Friday, April 21st 2006, 6:06pm

Jetzt seh ich es auch :D

ktm

Erfahrener Schreiberling

7

Saturday, April 22nd 2006, 4:25am

Quoted

Original von Ray-D
die zahl multiplizieren mit 10^a, wobei a die anzahl der nachkommastellen ist, dann runden und dann wieder durch 10^a dividieren. beispiel:

4/3 = 1.3333333333

1.333333333* 10^1 = 13.3333333333

Math.round(13.33333333333333) = 13

13 / 10^1 = 1.3

jetzt daraus eine schöne methode machen :)

versus

Quoted

Original von rad
System.out.printf("%.1f", test);


Ray-D: Als Scherz gedacht, oder ganz einfach gePwned worden? :D
Deine erste Programmiersprache? So ne Formatierungsfunktion gibts doch eigentlich -überall-...

DrChaotica

Senior Schreiberling

  • "DrChaotica" is male

Posts: 714

Date of registration: Jan 22nd 2005

Location: SHG

Occupation: SW-Entwickler

8

Saturday, April 22nd 2006, 10:44am

Quoted

Original von ktm
Ray-D: Als Scherz gedacht, oder ganz einfach gePwned worden? :D
Deine erste Programmiersprache? So ne Formatierungsfunktion gibts doch eigentlich -überall-...


Trotzdem kann man sich sowas schneller selbst schreiben, als wenn man diese Funktionen jedes Mal aus der Dokumentation heraussucht...

Ray-D

Alter Hase

  • "Ray-D" is male

Posts: 690

Date of registration: Oct 9th 2002

Location: Zimbabwe-Island Ost Beiträge: 3.427

Occupation: Informatiker

9

Saturday, April 22nd 2006, 11:57am

Quoted

Original von ktm
Ray-D: Als Scherz gedacht, oder ganz einfach gePwned worden? :D
Deine erste Programmiersprache? So ne Formatierungsfunktion gibts doch eigentlich -überall-...

- ja, ein scherz, lustig, oder?
- ja, meine erste, und einzige programmiersprache (um genau zu sein, sollte das mein erstes programm werden)
- natürlich ist es viel besser wenn man weiss, wo man wissen findet, anstatt selbst zu denken, ich dummbatz!
(- ich fand rundemal(double wert, int nachkommastellen) schöner als System.out.printf("%.1f", test);)
"ob ich alles weiss, was wir wissen, weiss ich auch nicht, aber ich weiss natürlich niemand von uns weiss etwas was er nicht weiss" - Wolgang Schäuble
Freiheit wird nicht erbettelt, sondern erkämpft


Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von »Ray-D« (Heute, 04:29)

ktm

Erfahrener Schreiberling

10

Sunday, April 23rd 2006, 7:30am

In der Retrospektive hätte ich vlt mal auf dein Beitrittsdatum schauen können, bevor ich die "erste Sprache" losgelassen hab... naja. Ansonsten, zum vorletzten Punkt:

Quoted

Master Foo once said to a visiting programmer: “There is more Unix-nature in one line of shell script than there is in ten thousand lines of C.”

The programmer, who was very proud of his mastery of C, said: “How can this be? C is the language in which the very kernel of Unix is implemented!”

Master Foo replied: “That is so. Nevertheless, there is more Unix-nature in one line of shell script than there is in ten thousand lines of C.”

The programmer grew distressed. “But through the C language we experience the enlightenment of the Patriarch Ritchie! We become as one with the operating system and the machine, reaping matchless performance!”

Master Foo replied: “All that you say is true. But there is still more Unix-nature in one line of shell script than there is in ten thousand lines of C.”

The programmer scoffed at Master Foo and rose to depart. But Master Foo nodded to his student Nubi, who wrote a line of shell script on a nearby whiteboard, and said: “Master programmer, consider this pipeline. Implemented in pure C, would it not span ten thousand lines?”

The programmer muttered through his beard, contemplating what Nubi had written. Finally he agreed that it was so.

“And how many hours would you require to implement and debug that C program?” asked Nubi.

“Many,” admitted the visiting programmer. “But only a fool would spend the time to do that when so many more worthy tasks await him.”

“And who better understands the Unix-nature?” Master Foo asked. “Is it he who writes the ten thousand lines, or he who, perceiving the emptiness of the task, gains merit by not coding?”

Upon hearing this, the programmer was enlightened.

- http://www.catb.org/~esr/writings/unix-k…n-thousand.html

This post has been edited 1 times, last edit by "ktm" (Apr 23rd 2006, 7:30am)


Scooby22

Trainee

  • "Scooby22" is male

Posts: 77

Date of registration: Sep 12th 2004

Location: Laatzen

Occupation: Angew. Informatik

11

Sunday, April 23rd 2006, 9:13pm

aufgabe 2

Hallo leute vllt kann mir jemand helfen .

habe irgendwie das gefühl das ich auf dem holzweg bin was die aufgabenstellung und die bearbeitung geht hat jemand eventuell hilfreiche tips.

...bin kurz davor in den tisch zu beißen

hamena314

Zerschmetterling

  • "hamena314" is male

Posts: 2,032

Date of registration: Aug 31st 2003

Location: Hannover

Occupation: Informatikstudent (d'uh)

12

Monday, April 24th 2006, 9:04am

Hi Scooby22,

ich denke, die Aufgabenstellung ist sehr freigiebig im bezug auf Interpretation, soll heissen:
Du kannst relativ viel mit
System.out.printf("Geschriebenes Wort" + [formatierung] + "Geschriebenes Wort"...)
erledigen. Laut Aufgabenstellung muss dein Programm ja nur mit einem Parameter fütterbar sein und das geht mit dem Teil [formatierung] recht gut.

Als Hilfe vielleicht noch:
double d = 13.2;
int i = 9;
System.out.printf("d: %f, i: %d\n", d, i); <-- die Variablen werden erst hinten eingehängt und spiel mal mit den Parametern ein bischen herum, dann bekommst du genau die Formatierung der Aufgabe hin. ;)

Ansonsten sag einfach direkt, wo du hängst!

P.S.: Hat jemand einen guten Vorschlag für Aufgabe 2?
Wollte die nachher erst noch machen und hatte bisher nur die Idee 3er ineinander verschachtelter for-Schleifen. =)

HAVE PHUN!
Nicht der Wind bestimmt die Richtung, sondern das Segel! (Lao Xiang, China)

This post has been edited 1 times, last edit by "hamena314" (Apr 24th 2006, 9:06am)


  • "Joachim" is male

Posts: 2,863

Date of registration: Dec 11th 2001

Location: Hämelerwald

Occupation: Wissenschaftlicher Mitarbeiter (Forschungszentrum L3S, TU Braunschweig)

13

Monday, April 24th 2006, 10:29am

Quoted

Original von hamena314
P.S.: Hat jemand einen guten Vorschlag für Aufgabe 2?
Wollte die nachher erst noch machen und hatte bisher nur die Idee 3er ineinander verschachtelter for-Schleifen. =)
Hab mir die Aufgabe gerade mal angeschaut.

Um das Durchgehen aller Möglichkeiten kommst Du nicht herum, da Du ja für alle Belegungen den Wahrheitswert angeben sollst.

Eine elegantere (aber auch aufwendigere) Lösung wäre es, mit einer for-Schleife zu arbeiten, die von 0 bis 2^3 - 1 zählt. Jeder Durchlauf entspricht nun einer Belegung. Die Werte der Variablen unter jeder Belegungen lassen sich über die jeweilige Binärdarstellung des Schleifenzählers ermitteln.
The purpose of computing is insight, not numbers.
Richard Hamming, 1962

Alucard

Praktikant

  • "Alucard" is male

Posts: 5

Date of registration: Mar 21st 2006

14

Monday, April 24th 2006, 11:18am

Hab bei Aufgabe2 3 verschachtelte Do-Schleifen genommen.

Für jede Variable a,b,c eine Schleife wobei nach jeder Schleife der jeweilige boolsche-Wert negiert wird.
In der letzten Schleife dann zusätzlich noch die Ausgabe der Verknüpfungen.

Hatten das zwar noch nich in der Vorlesung is aber kurz und elegant.
In the name of God, impure souls of the living dead shall be banished into eternal damnation. Amen.

  • "Joachim" is male

Posts: 2,863

Date of registration: Dec 11th 2001

Location: Hämelerwald

Occupation: Wissenschaftlicher Mitarbeiter (Forschungszentrum L3S, TU Braunschweig)

15

Monday, April 24th 2006, 11:25am

Quoted

Original von Alucard
Hab bei Aufgabe2 3 verschachtelte Do-Schleifen genommen.

Für jede Variable a,b,c eine Schleife wobei nach jeder Schleife der jeweilige boolsche-Wert negiert wird.
In der letzten Schleife dann zusätzlich noch die Ausgabe der Verknüpfungen.

Hatten das zwar noch nich in der Vorlesung is aber kurz und elegant.
Elegant finde ich das nicht, weil eine solche Konstruktion nicht auf Wahrheitstabellen für größere Variablenanzahlen verallgemeinert werden kann. Mit Deinem Vorgehen müßte sich nämlich der Quellcode für jede Anzahl von Variablen ändern. (Hier sind zwar nur drei Variablen vorhanden, aber es könnten genauso gut fünf oder zehn sein.)

Besser finde ich die oben von mir beschriebene for-Schleife. Oder noch besser: Eine while-Schleife, die einen Binärzähler implementiert. Der Wert dieses Zählers in jedem Durchlauf stellt dann die Belegung dar.
The purpose of computing is insight, not numbers.
Richard Hamming, 1962

This post has been edited 1 times, last edit by "Joachim" (Apr 24th 2006, 11:26am)


BLUESCREEN

Junior Schreiberling

  • "BLUESCREEN" is male

Posts: 244

Date of registration: Oct 11th 2005

16

Monday, April 24th 2006, 6:45pm

Quoted

Original von Joachim
Eine elegantere (aber auch aufwendigere) Lösung wäre es, mit einer for-Schleife zu arbeiten, die von 0 bis 2^3 - 1 zählt.

Laut Aufgabenstellung soll man mehrere verschachtelte Schleifen verwenden.

  • "Joachim" is male

Posts: 2,863

Date of registration: Dec 11th 2001

Location: Hämelerwald

Occupation: Wissenschaftlicher Mitarbeiter (Forschungszentrum L3S, TU Braunschweig)

17

Monday, April 24th 2006, 6:52pm

Quoted

Original von BLUESCREEN

Quoted

Original von Joachim
Eine elegantere (aber auch aufwendigere) Lösung wäre es, mit einer for-Schleife zu arbeiten, die von 0 bis 2^3 - 1 zählt.

Laut Aufgabenstellung soll man mehrere verschachtelte Schleifen verwenden.
Ups, das habe ich überlesen.
The purpose of computing is insight, not numbers.
Richard Hamming, 1962

sos1981

Alter Hase

  • "sos1981" is male

Posts: 1,562

Date of registration: Oct 28th 2003

Location: Wolfsburg

Occupation: Testentwickler

18

Monday, April 24th 2006, 10:01pm

also ich bräuchte da noch ein bischen mehr Hilfe.
ich hab mir jetzt das ganze Wochenende Java reingezogen, hab mir die Postings meienr Vorredner durchgelesen, allerdings haben mich diese bei Aufg. 2 zu keinerlei Ergebnis geführt.
Mein Problem ist: Wie lasse ich boolsche Variablen in einer Schleife laufen? Und wie gestalte ich dann die entsprechende Ausgabe?

Ein Beispiel wäre geil....
Hoffe auf Hilfe
Florian
Der Einzigste ist noch viel einziger als der Einzige!

This post has been edited 1 times, last edit by "sos1981" (Apr 24th 2006, 10:02pm)


julianr

Erfahrener Schreiberling

Posts: 298

Date of registration: Oct 13th 2005

Location: I live in a giant bucket.

19

Monday, April 24th 2006, 11:10pm

booleans laufen lassen kann man in Java knicken. Was du aber machen kannst, ist einfach eine int-Variable von 0 bis 1 laufen zu lassen und dann "variablenname == 1" als den benötigten Boolean zu verwenden.

Für die Ausgabe kannst du dann %b mit den entsprechenden Zusatzflags nehmen. Siehe irgendeine Referenz zu Javas PrintStream.printf().

This post has been edited 1 times, last edit by "julianr" (Apr 24th 2006, 11:11pm)


ruffy85

Trainee

  • "ruffy85" is male

Posts: 103

Date of registration: Oct 12th 2005

Location: Hildesheim

Occupation: B.Sc. Informatik / 1. Semester

20

Monday, April 24th 2006, 11:20pm

Die zweite Aufgabe ist echt seltsam ;-) Ich frage mich gerade, wie eine Ausgabe erzeugt werden soll und ob überhaupt. Hab ja keine Eingabe...

Habe anhand der Wertetabelle die Abfragen als verschachtelte Schleifen gebaut, nur was bringt uns das? Wir geben ja keine Werte für x,y,z ein (0,1), somit tut das Programm ja absolut nichts.

Die Variablen x,y,z sind auch konstant, sofern man ihnen beim deklarieren Werte zuweist.

ODER:
Habe ich jetzt einen totalen Denkfehler in der Aufgabe???