我正在编写一个计算器程序,其中最后一个输入提示中的用户写入小数点数(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);
答案 0 :(得分:1)
您的变量decimal
应该是int。所以你应该改变以下几行:
String decimal;
您应该更改为:
int decimal;
和
decimal = input.nextLine();
您应该更改为:
decimal = input.nextInt();
或者,如果要将其保留为String,则可以在读取小数位数之前添加额外的input.nextLine();
。之所以会发生这种情况,是因为nextLine()使用行分隔符来读取cislo2
变量而nextInt()
只读取int。