簡體   English   中英

當用戶輸入非雙精度值的內容時,如何打印錯誤消息?

[英]How to print error message when user enters anything that is not a double?

我正在嘗試創建一個Java程序,該程序從用戶讀取一個雙精度值,然后打印這兩個數字之間的差,以使該差始終為正。 如果輸入的不是數字,我需要顯示一條錯誤消息。 請幫助,謝謝!

當我運行程序並輸入第二個double值時,沒有任何反應。 我也嘗試添加try and catch,但是出現錯誤,提示num1無法解析為變量:(

import java.util.Scanner;
public class Positive {

    public static void main(String[] args) {

        //Reads input
        Scanner sc = new Scanner(System.in);  

        System.out.println ("Please enter a double vaule: ");

            double num1 = Math.abs(sc.nextDouble());
            System.out.println("Please enter a second double vaule: " );
            double num2 = Math.abs(sc.nextDouble());
            double total  = 0;
            double total2 = 0;      

        if (sc.hasNextDouble()) {
        num1 = sc.nextDouble();

        if (num1>num2) {
            total = ((num1 - num2)); 
            System.out.println("The difference is " + total);
        }   

        if ((num1 < num2)); {
            total2 = ((num2 - num1));
            System.out.println("The difference is "+ total2);
        }

        }else {
            System.out.println("Wrong vaule entered");
        }

    }
}

你有正確的想法。 您只需要在最后一個if之后刪除分號( ; ),並正確嵌套您的條件:

if (sc.hasNextDouble()) {
    num1 = sc.nextDouble();

    if (num1 > num2) {
        total = (num1 - num2); 
        System.out.println("The difference is " + total);
    }   
    else if (num1 < num2) {
        total2 = (num2 - num1);
        System.out.println("The difference is "+ total2);
    }
} else {
    System.out.println("Wrong vaule entered");
}

為了在用戶輸入雙num1值之前顯示錯誤消息,我對每個值( num1num2 )使用了while循環。

如果用戶輸入了錯誤的值"Wrong vaule entered, Please enter again: "輸入了錯誤的值"Wrong vaule entered, Please enter again: "消息將顯示,並等待下一個輸入sc.next(); 如果用戶輸入一個雙精度值,則checkfalsewhile loop退出

import java.util.Scanner;
public class Positive {

    public static void main(String[] args) {

        // Reads input
        Scanner sc = new Scanner(System.in);

        System.out.println("Please enter a double vaule: ");

        double num1 = 0;
        double num2 = 0;
        double total = 0;
        double total2 = 0;
        boolean check = true;

        while (check) {
            if (sc.hasNextDouble()) {
                num1 = Math.abs(sc.nextDouble());
                check = false;

            } else {
                System.out.println("Wrong vaule entered, Please enter again: ");
                sc.next();
            }
        }
        check = true; // that's for second control
        System.out.println("Please enter a second double vaule: ");
        while (check) {
            if (sc.hasNextDouble()) {
                num2 = Math.abs(sc.nextDouble());
                check = false;

            } else {
                System.out.println("Wrong vaule entered, Please enter again: ");
                sc.next();
            }
        }
        if (num1 > num2) {
            total = ((num1 - num2));
            System.out.println("The difference is " + total);
        } else if ((num1 < num2)) {
            total2 = ((num2 - num1));
            System.out.println("The difference is " + total2);
        } 
    }
}

嘗試運行您的代碼,當您輸入第一個double時,鍵入諸如“ abc”之類的隨機值。 怎么了? 在您的控制台中,它應該顯示一個名為java.util.InputMismatchException的錯誤。 您可以這樣使用try catch塊:

try {
    //tries to get num1 and num2
    double num1 = Math.abs(sc.nextDouble());
    double num2 = Math.abs(sc.nextDouble());
} catch (java.util.InputMismatchException i){
    //will only go here if either num1 or num2 isn't a double
    System.out.println("error");
}

基本上,代碼將嘗試獲取num1num2 但是,如果輸入非雙精度數,它將“捕獲” java.util.InputMismatchException並轉到catch

我可能會誤解您的問題,但是如果您想找到num1num2之差的絕對值,則要做的只是:import java.util.Scanner;

public class test {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        try {
            System.out.println("Please enter a double value: ");
            double num1 = sc.nextDouble();
            System.out.println("Please enter a double value: ");
            double num2 = sc.nextDouble();

            System.out.println("The difference is: " + Math.abs(num1 - num2));

        } catch (java.util.InputMismatchException i) {
            System.out.println("error");
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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