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

时间:2017-01-16 12:47:01

标签: java int double

这是我的第一个问题)希望有人可以提供帮助:

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

但是如果我放双,我想打印出消息=("不是它不是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");
            }
    }

}

4 个答案:

答案 0 :(得分:2)

一种解决方案是将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
}

答案 1 :(得分:2)

创建一个新的double变量并将sc.nextDouble()指定给该双变量。

实施例: double checkDouble; ....

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

答案 2 :(得分:1)

在Eclipse中尝试代码时,使用check = sc.nextDouble()checkint)时出错,您可以这样修复:

  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或演员表丢失任何小数部分。

答案 3 :(得分:0)

将int转换为double值,这可能会有所帮助。

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