簡體   English   中英

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

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM