Java逻辑错误-未显示十位小数
我的程序允许用户计算两个数字,然后根据用户输入的运算符执行简单的计算。所以我的源代码是:Java逻辑错误-未显示十位小数,java,switch-statement,Java,Switch Statement,我的程序允许用户计算两个数字,然后根据用户输入的运算符执行简单的计算。所以我的源代码是: System.out.print("Enter First Number: "); int num1 = scanNum.nextInt(); System.out.print("Enter Second Number: "); int num2 = scanNum.nextInt(); System.out
System.out.print("Enter First Number: ");
int num1 = scanNum.nextInt();
System.out.print("Enter Second Number: ");
int num2 = scanNum.nextInt();
System.out.print("Enter Operator (+, -, * or /): ");
char opt = scanOpt.next().charAt(0);
scanNum.close();
scanOpt.close();
switch (opt)
{
case '+':
float result = num1 + num2;
System.out.println(num1 + " " + opt + " " + num2 + " = " +result);
break;
case '-':
result = num1 - num2;
System.out.println(num1 + " " + opt + " " + num2 + " = " +result);
break;
case '*':
result = num1 * num2;
System.out.println(num1 + " " + opt + " " + num2 + " = " +result);
break;
case '/':
result = num1 / num2;
System.out.println(num1 + " " + opt + " " + num2 + " = " +result);
break;
default:
System.out.println("Invalid Operator!");
break;
它工作得很好,但是每当它将两个数字分开,例如“6.0/4.0”,第十个小数就不会出现。正确的输出应为:
Enter First Number: 6
Enter Second Number: 4
Enter Operator (+, -, * or /): /
6 / 4 = 1.5
但使用我自己的源代码,输出是:
Enter First Number: 6
Enter Second Number: 4
Enter Operator (+, -, * or /): /
6 / 4 = 1.0
之所以会出现这种情况,是因为Java将两个整数相除,从而产生一个整数输出。 尝试将输入声明为float 或者是另一种方式
1.0*num1/num2
这将num1“转换”为浮点值。@Ivar i已将数据类型更改为double,但它仍然不起作用。
num1
或num2
必须是十进制类型。如果您将其中一个强制转换为float
或double
,它将起作用。像result=(double)num1/num2
。已经工作了,谢谢!我已经将num1和num2转换成了double,并且成功了。但这一次也起了作用。谢谢你!
double result;
switch (opt)
{
case '+':
result = (double) num1 + num2;
System.out.println(num1 + " " + opt + " " + num2 + " = " +result);
break;
case '-':
result = (double)num1 - num2;
System.out.println(num1 + " " + opt + " " + num2 + " = " +result);
break;
case '*':
result = (double) num1 * num2;
System.out.println(num1 + " " + opt + " " + num2 + " = " +result);
break;
case '/':
result = (double) num1 / num2;
System.out.println(num1 + " " + opt + " " + num2 + " = " +result);
break;
default:
System.out.println("Invalid Operator!");
break;
}