Geben Sie die genaue Anzahl von Dezimalstellen durch Benutzereingaben , Java
Schreibe ich ein Rechner-Programm, wo der Benutzer in der letzten Eingabe-prompt schreibt die Anzahl der Dezimalstellen (1, 2 ,3...), dass der Ausgang der zum Beispiel die Summe von 2 zahlen haben sollte.
import java.util.Scanner;
import java.util.Formatter;
public class Lab01 {
public void start(String[] args) {
double cislo1;
double cislo2;
int operacia;
String decimal;
String dec;
Scanner op = new Scanner(System.in);
System.out.println("Select operation (1-sum, 2-dev, 3- *, 4- /)");
operacia = op.nextInt();
if (operacia >= 1 && operacia <= 4) {
if(operacia == 1) {
Scanner input = new Scanner(System.in);
System.out.println("Enter number one:");
cislo1=input.nextDouble();
System.out.println("Enter number two:");
cislo2=input.nextDouble();
System.out.println("Enter number of decimal points");
decimal=input.nextLine();
dec="%."+decimal+"f";
Formatter fmt = new Formatter();
fmt.format(dec, cislo2);
System.out.println( fmt);
}
} else {
System.out.println("wrong!");
}
}
}
Habe ich versucht Formatter-Methode für die dezimale Eingabe, aber die Fehlermeldung lautet" Konversion = '.' "
System.out.println("Enter number of decimal points");
decimal = input.nextLine();
dec = "%." + decimal + "f";
Formatter fmt = new Formatter();
fmt.format(dec, cislo2);
System.out.println(fmt);
Funktioniert bei mir. Kannst du ein reproduzierbares Beispiel?
Funktioniert bei mir auch
Sind Sie an den vertikalen Raum awards? Bitte formatieren Sie Ihren code angemessen.
Funktioniert bei mir auch
Sind Sie an den vertikalen Raum awards? Bitte formatieren Sie Ihren code angemessen.
InformationsquelleAutor Adam Beňko | 2018-03-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Variable
decimal
sollte ein int. So ändern Sie die Folgen Zeilen:Sollten Sie ändern in:
Und:
Sollten Sie ändern in:
Oder, wenn Sie möchten, um es als String, können Sie fügen Sie eine zusätzliche
input.nextLine();
vor dem Lesen die Anzahl der Nachkommastellen. Es tritt auf, weil nextLine - () verbraucht der line separator, wo Sie Lesen Ihrecislo2
variable undnextInt()
liest nur ein int.Was meinst du mit "Zahl hinter dezimal" und "Runden Punkte durch 6"? Was sind die Eingänge und der Ausgang?
Wenn ich "dezimal=input.nextInt();" auf "1", wenn die Eingabeaufforderung in der Konsole angezeigt wird, und die "cislo2" ist 3.412444124, wird die Ausgabe 3.412444, mit 6 Nachkommastellen. Wenn ich "dezimal=input.nextInt();" , 50, der Ausgang wird wieder 3.412444, mit 6 Nachkommastellen.
Sind Sie sicher, dass Sie nicht ändern Sie etwas? Weil es für mich funktioniert. Neben dieser, ich denke, dass, wenn Sie wollen eine Summe, die innerhalb Ihrer Methode, die Sie hinzufügen sollten fmt.format(dec, cislo1 + cislo2) als Parameter zu Ihrem formatter
Fehler war auf meiner Seite. Vielen Dank für die Hilfe, es funktioniert jetzt 🙂
InformationsquelleAutor Bernardo Rocha