通过用户输入Java指定确切的小数位数

时间:2018-03-13 11:43:06

标签: java input decimal formatter

我正在编写一个计算器程序,其中最后一个输入提示中的用户写入小数点数(1,2,3 ......),例如2个数字之和的输出应该有。

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!");
         }
     }
 }

我已尝试使用Formatter方法进行十进制输入,但错误显示为“Conversion ='。” “

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);

1 个答案:

答案 0 :(得分:1)

您的变量decimal应该是int。所以你应该改变以下几行:

String decimal;

您应该更改为:

int decimal;

decimal = input.nextLine();

您应该更改为:

decimal = input.nextInt();

或者,如果要将其保留为String,则可以在读取小数位数之前添加额外的input.nextLine();。之所以会发生这种情况,是因为nextLine()使用行分隔符来读取cislo2变量而nextInt()只读取int。