应该是小数形式
问题描述:
我的程序只有在输入一个十进制数的情况下才能工作。但是当我输入一个整数时它仍然运行。需要帮助应该是小数形式
import java.util.*;
public class Welcome{
public void CelFar(){
Scanner decimal = new Scanner(System.in);
System.out.println("Enter a decimal number: ");
try{
double value = decimal.nextDouble();
value = ((value - 32)*5)/9;
System.out.println("RESULT : " +value);
}
catch(InputMismatchException e){
System.out.println("Must be in decimal number ! ");
}
}
}
答
这不是completelly我清楚你想要达到什么样的事:
- 应程序返回错误如果输入值是1.0的例子吗?
- 如果输入值为1,程序应该返回错误,但是如果它是1.0,那么可以吗?
如果答案是(1)我只是验证如果返回的十进制可以转换为int或(不失去精度)。 如果答案是(2)(似乎是这样),我只是使用scanner.next(),它返回String,而不是nextDouble()。然后在实际转换为double之前验证String是否可以转换为int。
答
如果您确实想让42
成为错误,但42.0
即使它们两个完全相同,也要先通过调用hasNextXxx
方法验证输入。
这也解决了您使用异常来捕捉错误输入的问题。
Scanner decimal = new Scanner(System.in);
for (;;) { // forever loop
System.out.println("Enter a decimal number: ");
if (decimal.hasNextDouble() && ! decimal.hasNextBigInteger()) {
double value = decimal.nextDouble();
value = ((value - 32)*5)/9;
System.out.println("RESULT : " +value);
break; // exit forever loop
}
decimal.next(); // consume bad token
System.out.println("Must be in decimal number ! ");
}
答
如果你想你的工作计划,因为只有为小数,那么你可以尝试一个黑客,
1您可以通过使用十进制
2-分割字符串的数字转换为字符串字符
小数点后3-转换字符串中数,并找到它是否大于0或不
4-如果它大于0,那么它是Decima的数L,然后执行操作
5-如果不是那么它的整体数量和抛出异常
没有小数点的数字具有相同的值,如果你加上'.0'它。为什么这是个问题? – Mureinik
我的程序只能以十进制值运行。例如,如果你输入一个整数。必须有一个错误。什么代码应该是 – Simba
@JoeC我的程序只能以十进制值运行。例如,如果你输入一个整数。必须有一个错误。什么代码应该是 – Simba