Java > int to double(Scanner>System.out)



这是我的第一个问题)希望有人能帮忙:

我正在尝试编写下一个程序:所以我有 1 个输入和最多 2 个输出首先,我正在检查输入是否为(int!如果为 TRUE,我打印出"是的,它是整数"的消息并显示"以可变整数保存的数字",

但是如果我放双倍,我想打印出消息 =(" 不,它不是 INT) +并以双格式显示!

当我输入

int 时一切都很好,但是当我输入双倍时,它不正确。

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,并将检查更改为:

if (check == Math.floor(check))

在您的解决方案中,您尝试将double分配给int。由于它不适合,它会失去精度并被截断。

最终解决方案应如下所示:

Scanner sc = new Scanner(System.in);
check = sc.nextDouble();
if (check == Math.floor(check)) {
    // an "int"
} else {
    // not integer
}

创建一个新的双精度变量并将 sc.nextDouble() 分配给该双精度变量。

例:双重检查双倍;....

else if(sc.hasNextDouble()){
    checkDouble=sc.nextDouble();
        System.out.println("Nooo " + check + " NO it is not INT");
        }

在 Eclipse 中尝试代码时,使用 check = sc.nextDouble() 时出现 en 错误(check是一个 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 转换为双精度值,这可能会有所帮助。

else if (sc.hasNextDouble()) {
            check = (int) sc.nextDouble();
            System.out.println("Nooo " + check + " NO it is not INT");
        }

相关内容

最新更新