[英]Java > int to double(Scanner>System.out)
这是我的第一个问题)希望有人可以提供帮助:
我正在尝试编写下一个程序:所以我有 1 个输入和最大 2 个输出首先我正在检查输入是否为(整数!)内部",
但是如果我放双,我想打印出 message =(" NO it is not INT) + 并以双格式显示!
当我输入 int 时一切正常,但是当我输入 double 时它不正确。
public class Scan {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int check;
System.out.println("Your number? ");
if(sc.hasNextInt()){
check=sc.nextInt();
System.out.println("OKEI "+check+ " IT IS INTEGER! ");}
else if(sc.hasNextDouble()){
check=sc.nextDouble();
System.out.println("Nooo " + check + " NO it is not INT");
}
}
}
一种解决方案是将check
改为double
check
,并将检查更改为:
if (check == Math.floor(check))
在您的解决方案中,您试图为int
分配一个double
。 由于它不适合,它会失去精度并被截断。
最终解决方案应如下所示:
Scanner sc = new Scanner(System.in);
check = sc.nextDouble();
if (check == Math.floor(check)) {
// an "int"
} else {
// not integer
}
创建一个新的 double 变量并将 sc.nextDouble() 分配给该 double 变量。
示例:double checkDouble; ....
else if(sc.hasNextDouble()){
checkDouble=sc.nextDouble();
System.out.println("Nooo " + check + " NO it is not INT");
}
在 Eclipse 中尝试您的代码时,使用check = sc.nextDouble()
( check
check = sc.nextDouble()
an int
) 出现错误,您可以像这样修复它:
public static void main(final String[] args) {
System.out.println("Your number? ");
final Scanner sc = new Scanner(System.in);
if (sc.hasNextInt()) {
final int check = sc.nextInt();
System.out.println("OKEI " + check + " IT IS INTEGER! ");
} else if (sc.hasNextDouble()) {
final double check = sc.nextDouble();
System.out.println("Nooo " + check + " NO it is not INT");
} else {
System.out.println("Failed.");
}
}
这样,您就不会使用Math.floor
或演员表丢失任何小数部分。
将 int 转换为 double 值,这可能会有所帮助。
else if (sc.hasNextDouble()) {
check = (int) sc.nextDouble();
System.out.println("Nooo " + check + " NO it is not INT");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.