Frage von MitAhnig, 45

java Zufallszahl formatieren?

Hallo zusammen Ich lerne momentan java und beschäftige mich momentan mit dem formatieren von Zahlen. Meine Aufgabe ist es eine Zufallszahl zu erstellen (Schulnote) und diese auf eine Nachkommastelle zu runden. Dies ist mein momentaner Code:

public class Schuelernoten { public static void main(String[]args){

        final java.text.DecimalFormat twoDigits = new java.text.DecimalFormat( "0.00" );

        double testzahl = (int) ((Math.random() * 5) + 1);
        System.out.println(testzahl);
        testzahl= twoDigits.format(testzahl);
        System.out.println(testzahl);

} }

und dies ist der Error: Exception in thread "main" java.lang.NumberFormatException: For input string: "4.00" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:580) at java.lang.Integer.parseInt(Integer.java:615) at Schuelernoten.main(Schuelernoten.java:31) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147) 4

Ich bedanke mich jetzt schon für die Hilfe :) Liebe Grüsse Davide

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von RakonDark, 30
NumberFormat formatter = new DecimalFormat("#0.00"); 
System.out.println(formatter.format(4.0));
Antwort
von anonymschatz, 30

musst du sie runden? ansonsten könntest du auch mit Random rnd = new Random(); und int zz = rnd.nextInt(sovielzahlenduwillst);
double note = zz/100; - so hättwst du die lösung

Kommentar von MitAhnig ,

Ich muss sie leider runden :/

Expertenantwort
von KnusperPudding, Community-Experte für Java, 18

Für die Gerundete Darstellung der Zahl wäre das eine 0 zuviel:

final java.text.DecimalFormat twoDigits = new java.text.DecimalFormat("0.0");

Damit du überhaupt einen Wert zum runden hast, lass den cast auf int weg:

double testzahl = ((Math.random() * 5) + 1);

Die .format Methode von DecimalFormat hat als Rückgabewert einen String.

String note = twoDigits.format(testzahl);

Keine passende Antwort gefunden?

Fragen Sie die Community