Java Problem [Datentyp]

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Es geht im folgenden Code.

Code:
import javax.swing.*;
import java.lang.*;
public class Automodell {
	public static void main ( String args[] ) {    // Erstellen der Eingabefelder
		JTextField[] feld = {new JTextField(), new JTextField(), new JTextField()}; // Dialogfelder erstellen
		Object[] msg = {"Automarke", feld[0], "Durchschnittsverbrauch (l/km)", feld[1], "Tankfüllung l", feld[2]}; // Dialogfelder bennenen:
		(new JOptionPane(msg)).createDialog(null,"Spritrechner").setVisible(true);
		double w1; // Variable: Durschnittsverbrauch
		double w2; // Variable: Tankfüllung
		String s1;
		String s2;
		s1= feld[1].getText().replace(',','.');
		s2= feld[2].getText().replace(',','.');
		w1 = Double.parseDouble (s1);
		w2 = Double.parseDouble (s2);
		String ausgabe;
		String ausgabe1;
 		// Konkatenation
		ausgabe = "" +(w2/w1 * 100.0);
		ausgabe1 = "" +feld[0].getText();
		// Ausgabe auf dem Bildschirm:
		JOptionPane.showMessageDialog( null, " Ihr " +ausgabe1 +" fährt " +ausgabe +" km weit ", "Ergebniss", JOptionPane.PLAIN_MESSAGE );
		System.exit( 0 );
	}
}

Ich bin blutiger Anfänger und habe aus Spaß folgendes versucht zu programmieren:

Ein Fenster mit 3 Abfragen: Automarke, Durschnittsverbrauch und Tankfüllung.
Nach Eingabe soll er mir ein neues Fenster ausspucken mit dem Wert, wie weit der Wagen mit der Tankfüllung fährt.

Nach einer ganzen Weile hin und her hab ich dann den oben abbgebildeten Code fabriziert.
Problem: Das Ergebniss, sprich die Strecke die er mit dem Sprit schafft, soll nur eine Nachkommerstelle haben und nicht wie in diesem Code unzählig viele. Wie programmiere ich sowas? Welchen Datentypen muss ich benutzen.

Wäre nett wenn ihr euch das mal ankucken würdet und paar Zeilen was dazu sagt :)
 
S

SlaterB

Gast
es gibt keinen Datentyp mit einer Nachkommastelle,
gegen double spricht nichts,

du musst das Ergebnis dann nur noch auf eine Nachkommastelle hinbiegen,
entweder mit Tools wie NumberFormat,
oder z.B. mit 10 mal nehmen, runden (Math.round oder auf int casten) und wieder durch 10.0 teilen
 
G

Guest

Gast
könntest du mír das mit dem int casten vlt. bisschen näher erklären? Wie gesagt ich hab von der Materie noch nicht worklich so die Ahnung.
Aber ansonsten danke schonmal, dachte es liegt am Datentypen.
 
S

SlaterB

Gast
Lernen macht man üblicherweise mit einem Lehrbuch,
in jedem davon findet man Infos zum casten,
warum sollte man damit jemand anders nerven?

nur wenn du etwas gelerntes nicht richtig verstehst,
oder überhaupt nicht weißt wie du vorzugehen hast (wie bei deiner Frage oben)
dann ist das Forum der richtige Platz,

also ich kann dir gerne eine Zeile schreiben,
aber nicht die zig Seiten, die es über casten zu wissen gibt, das steht in einem Buch ;)

double ergebnis = 5.4245
ergebnis = ((int) (10 * ergebnis)) / 10.0;

http://www.galileocomputing.de/openbook/javainsel5/javainsel02_002.htm#Xxx999803
 
G

Gast

Gast
Hallo,
also einfacher finde ich NumberFormat:
Code:
import java.text.*;
public class Beispiel{
public static void main(String[] args) {
double b = 1.3333333333333;
NumberFormat l = NumberFormat.getNumberInstance();
l.setMaximumFractionDigits(1);
System.out.println("Zahl mit einer Nachkommastelle: "+l.format(b));
   }
}
 
G

Gast

Gast
Nur noch eine Anmerkung:
Code:
import java.text.*;
public class Beispiel{
public static void main(String[] args) {
double b =        1.3533333333333;
double ergebnis = 1.3533333333333;
ergebnis = ((int) (10 * ergebnis)) / 10.0;
NumberFormat l = NumberFormat.getNumberInstance();
l.setMaximumFractionDigits(1);
System.out.println("Zahl mit einer Nachkommastelle: "+l.format(b));
System.out.println("Zahl mit einer Nachkommastelle: "+ergebnis);
   }
}
Gibt aus:
Zahl mit einer Nachkommastelle: 1,4
Zahl mit einer Nachkommastelle: 1.3
 

André B.

Bekanntes Mitglied
Ich würde mal annehmen, dass NumberFormat die Zahl rundet, wobei bei der anderen Lösung einfach Nachkommastellen weggelassen werden. Musst du für dich entscheiden, ob du's gerundet haben willst oder nicht.
MfG André
 

André Uhres

Top Contributor
Code:
       //Willst du nun Genauigkeit
        //steht "BigDecimal" bereit:
        System.out.println(4917.464451d - 4917d);
        BigDecimal bd = new BigDecimal("4917.46451");//-->import java.math.*;
        bd = bd.subtract(new BigDecimal(bd.intValue()));
        System.out.println(bd);
        bd = bd.setScale(3, BigDecimal.ROUND_HALF_UP);
        System.out.println(bd);
/* Ausgabe:
0.4644509999998263
0.46451
0.465
 */
 
G

Gast

Gast
Nun, bei einer Rundung mit einer Nachkommastelle komme ich mit BigDecimal zu keinem genaueren Ergebnis wie mit NumberFormat,
Oder sehe ich das falsch. Falls ja bitte um Aufklärung. Meiner Meinung nach ist Number Format bei einer Nachkommastelle die beste und eleganteste Lösung.
Gruß Gast
 

André Uhres

Top Contributor
Gast hat gesagt.:
Nun, bei einer Rundung mit einer Nachkommastelle komme ich mit BigDecimal zu keinem genaueren Ergebnis wie mit NumberFormat..
"BigDecimal" ist absolut verlässlich, "double" leider nicht immer:
Code:
NumberFormat l = NumberFormat.getNumberInstance();
l.setMaximumFractionDigits(1);
System.out.println(l.format(0.4500000000001).equals(l.format(4917.4500000000001-4917)));
Ausgabe: false :shock:

Das Gegenbeispiel mit "BigDecimal":
Code:
BigDecimal a = new BigDecimal("0.4500000000001");
BigDecimal b = new BigDecimal("4917.4500000000001");
BigDecimal c = new BigDecimal("4917");
System.out.println(
    a.setScale(1,BigDecimal.ROUND_HALF_DOWN)
    .equals((b.subtract(c)).setScale(1,BigDecimal.ROUND_HALF_DOWN)));
Ausgabe: true :D
 
G

Gast

Gast
Code:
"BigDecimal" ist absolut verlässlich, "double" leider nicht immer:
Hat mich überzeugt.

Danke
Gruß Gast
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
josfe1234 JAVA FX problem Java Basics - Anfänger-Themen 3
J JAVA-Problem blockiert MEDIATHEKVIEW Java Basics - Anfänger-Themen 13
Splayfer Java Array Problem... Java Basics - Anfänger-Themen 2
S Compiler-Fehler Exception in thread "main" java.lang.Error: Unresolved compilation problem: Java Basics - Anfänger-Themen 6
C Java Methoden "Parameter" Problem Java Basics - Anfänger-Themen 16
K Java Problem mit Übergabe von argumenten Java Basics - Anfänger-Themen 3
J "travelling salesman problem" mit Java Editor Java Basics - Anfänger-Themen 17
C Two-Center Problem in Java Java Basics - Anfänger-Themen 0
P Problem bei Java-Aufgabe Java Basics - Anfänger-Themen 12
L Java reset button Problem Java Basics - Anfänger-Themen 3
L Java reset button Problem Java Basics - Anfänger-Themen 9
L Problem bei Java-ActionListener Java Basics - Anfänger-Themen 4
Amelie Java Problem Java Basics - Anfänger-Themen 2
T eclipse mit java 9 Problem? Java Basics - Anfänger-Themen 5
B problem mit java Java Basics - Anfänger-Themen 15
Z Problem mit "Random" in Java Java Basics - Anfänger-Themen 12
J Verständnis Problem Java-Listener. Java Basics - Anfänger-Themen 59
A Problem eines Anfängers bei Java Java Basics - Anfänger-Themen 6
O Compiler-Fehler Ein weiteres Java Problem Java Basics - Anfänger-Themen 3
L Compiler-Fehler Problem beim Programmieren eines Kalenders (java.lang.ArrayIndexOutOfBoundsException) Java Basics - Anfänger-Themen 2
H Interface Problem mit Java Editor Java Basics - Anfänger-Themen 15
J Problem mit java Dos-Applikation Java Basics - Anfänger-Themen 3
M Problem/Unsicherheit bei Java-Aufgaben Java Basics - Anfänger-Themen 11
G Problem: Java Projekt als ausführbare Jar Exportieren (Eclipse) Java Basics - Anfänger-Themen 10
K Java Projekt als ausführbare Jar Exportieren (Eclipse) Problem Java Basics - Anfänger-Themen 24
D Erste Schritte Problem mit dem Java-Editor Eclipse [Frage] Java Basics - Anfänger-Themen 13
P Tag der Zeitumstellung Sommer->Winterzeit (Java Calendar) Problem Java Basics - Anfänger-Themen 5
T Problem mit Eclipse? Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 4
J Java Daten von Konsole einlesen (Spezielles Problem) Java Basics - Anfänger-Themen 6
R Problem mit Java-Chat Java Basics - Anfänger-Themen 2
KranzKrone Erste Schritte Java MVC Problem Java Basics - Anfänger-Themen 3
T Problem mit java-editor + Scanner Java Basics - Anfänger-Themen 9
C JDK installieren Habe ein Problem bei Java install Java Basics - Anfänger-Themen 4
B JAVA Package Problem Java Basics - Anfänger-Themen 8
D Java Date/Calendar Problem Java Basics - Anfänger-Themen 4
V Java Chat Programm Problem mit IP Addresse Java Basics - Anfänger-Themen 7
J Habe problem mit Java Java Basics - Anfänger-Themen 2
B Problem mit Dr. Java Java Basics - Anfänger-Themen 15
T Problem bei BeatBox aus Java-Von Kopf bis Fuß Java Basics - Anfänger-Themen 3
P Problem- Java Applet wird nicht ausgeführt Java Basics - Anfänger-Themen 9
H JDK installieren Mac Problem mit Java SE 1.7 Java Basics - Anfänger-Themen 5
I Java von Kopf bis Fuß: Ratespiel-Problem Java Basics - Anfänger-Themen 20
P Problem :Java-Dateien in einem Ordner ablegen Java Basics - Anfänger-Themen 10
M Java String " einfügen Problem Java Basics - Anfänger-Themen 2
G Java Dezimal Zahlen Internazialisation Problem Java Basics - Anfänger-Themen 7
I Problem mit Java Text Area Java Basics - Anfänger-Themen 14
S Problem mit java.awt Java Basics - Anfänger-Themen 3
S java versionen problem Java Basics - Anfänger-Themen 20
Z Problem mit Tutorial - Finde Kon.java nicht Java Basics - Anfänger-Themen 11
B Problem mit Java XML Java Basics - Anfänger-Themen 6
B Problem mit XML und Java Java Basics - Anfänger-Themen 2
F Methoden Java Freihand Problem Java Basics - Anfänger-Themen 4
turmaline Java Virtual Machine Launcher Problem Java Basics - Anfänger-Themen 1
J Java Installations/Deinstallations Problem. Java Basics - Anfänger-Themen 5
D Problem mit java.io.* Java Basics - Anfänger-Themen 6
M Problem bei einer Java-Aufgabe (Fakultäten) Java Basics - Anfänger-Themen 5
H Problem beim Anfang von Java (Java Editor) Java Basics - Anfänger-Themen 2
D Problem mit Java für dummies Java Basics - Anfänger-Themen 2
K Java Array Problem Java Basics - Anfänger-Themen 3
M java.lang.NumberFormatException-Problem Java Basics - Anfänger-Themen 6
S Java problem, bitte um hilfe! Java Basics - Anfänger-Themen 9
J Problem mit Ausführen von Java-Dateien Java Basics - Anfänger-Themen 5
A Problem bei der Division mit Java Java Basics - Anfänger-Themen 4
E Datentypen ein java problem rekursiv loesen Java Basics - Anfänger-Themen 2
S Java Verständnis Problem Methoden etc. Java Basics - Anfänger-Themen 22
E Java hashCode equals Problem Java Basics - Anfänger-Themen 2
D Problem bei Java - Aufgabe Java Basics - Anfänger-Themen 7
B in & out class problem (java anfängeR) Java Basics - Anfänger-Themen 5
F Java Variablen Problem Java Basics - Anfänger-Themen 8
R Problem beim Ausführen von Java-PGM aus der shel Java Basics - Anfänger-Themen 3
D Java Problem bitte um hilfe Java Basics - Anfänger-Themen 4
L Java [Beginner] Problem Java Basics - Anfänger-Themen 8
K java.util.ConcurrentModificationException problem in der Logik? Quaxli-Tutorial Java Basics - Anfänger-Themen 9
D Java per Konsole oder Batch öffnen - Problem Java Basics - Anfänger-Themen 4
S setVisible Problem bei java.awt Java Basics - Anfänger-Themen 9
J Anfänger-Problem: Rechnen mit Java Java Basics - Anfänger-Themen 3
T Java Bilderverwaltung - Image Fetcher Problem Java Basics - Anfänger-Themen 4
V Problem bei java Application Java Basics - Anfänger-Themen 3
B Java Desktop Wecker problem Java Basics - Anfänger-Themen 3
? Konsolenprogramm hat Problem mit java.awt oder javax.swing Java Basics - Anfänger-Themen 7
M Problem mit dem Klassen aus dem java.io Paket Java Basics - Anfänger-Themen 9
E java.util.ConcurrentModificationException Problem Java Basics - Anfänger-Themen 5
G java.io.File problem Java Basics - Anfänger-Themen 5
R Java Problem (mit NetBeans) - html gibt nur java logo aus Java Basics - Anfänger-Themen 7
M Problem mit Java unter Vista 64 Java Basics - Anfänger-Themen 4
S Seltsames Java Problem Java Basics - Anfänger-Themen 3
A Matisse oder Java Problem: JPanels werden riesig ? Java Basics - Anfänger-Themen 3
S Ausgabe auf der Java-Console (Java Problem) Java Basics - Anfänger-Themen 13
A Do/While Problem (Exception in thread "main" java. Java Basics - Anfänger-Themen 4
Nexu [JAVA] Problem mit den Fenstern Java Basics - Anfänger-Themen 2
D Problem bei einer Formel (Bin Java Neuling) Java Basics - Anfänger-Themen 3
D Java Rechner und Einlesen Problem (mit hasNext) Java Basics - Anfänger-Themen 2
G JAVA KARA PROBLEM Java Basics - Anfänger-Themen 4
F Problem mit auführen einer .bat Datei aus Java heraus Java Basics - Anfänger-Themen 24
I Problem mit import java.awt.*; Java Basics - Anfänger-Themen 5
J Java GUI Problem (throws.) Java Basics - Anfänger-Themen 3
S Problem beim kompilieren mit Java 1.4 Java Basics - Anfänger-Themen 4
A problem mit java.awt Java Basics - Anfänger-Themen 17
K Problem mit javax/servlet/http/HttpServletRequest.java Java Basics - Anfänger-Themen 2
N Problem mit MySql und Java Java Basics - Anfänger-Themen 12

Ähnliche Java Themen

Neue Themen


Oben