這是一個非常簡單的代碼,直到輸入是數字,但是當用戶輸入是字串時,我得到的例外為 - “執行緒“main”java.util.InputMismatchException 中的例外”我需要捕獲這個例外,但我不知道如何去做吧。
下面是代碼:
public class demo {
public static void main (String[] args){
System.out.println("Enter pin :");
Scanner scanner = new Scanner(System.in);
long pin = scanner.nextLong();
while (pin == 1234){
System.out.println("Login Successful");
String name = "Admin";
System.out.println("User Name : " name);
break ;
}
if (pin != 1234)
System.out.println("Incorrect pin");
}
}
uj5u.com熱心網友回復:
那么這將解決問題,但不是原因
問題是在將輸入轉換為 long 變數之前不檢查輸入的型別
Scanner scanner = new Scanner(System.in);
long pin = scanner.nextLong();
你應該將整個輸入作為字串掃描,檢查其中是否有數字以外的任何符號,如果有,則回傳輸入不是數字并再次詢問。
uj5u.com熱心網友回復:
只要你在收集價值。
long pin = scanner.nextLong();
如果你想使它成為所有型別的通用,你必須實作它在下面的實作方式。
private static Pattern pattern = Pattern.compile("-?\\d (\\.\\d )?");
public static boolean isNumeric(String strNum) {
if (strNum == null) {
return false;
}
return pattern.matcher(strNum).matches();
}
public static void main(String[] args) {
System.out.println("Enter pin :");
Scanner scanner = new Scanner(System.in);
final String input = scanner.next();
if (isNumeric(input) && Long.valueOf(input) == 1234) {
System.out.println("Login Successful");
String name = "Admin";
System.out.println("User Name : " name);
} else {
System.out.println("Incorrect pin");
}
}
希望這會幫助你。
uj5u.com熱心網友回復:
在 Java 中,try/catch 塊的作業方式如下:
try {
// code that you want to try goes here
} catch (final Exception exception) {
// code for handling the exception goes here
}
在你的情況下,你可以做這樣的事情
System.out.println("Enter pin :");
long pin;
try (final Scanner scanner = new Scanner(System.in)) {
pin = scanner.nextLong();
} catch (final Exception exception) {
// TODO: handle the exception.
exception.printStackTrace();
}
uj5u.com熱心網友回復:
這應該有效。do while 回圈將回圈直到用戶只輸入數字。如果用戶輸入任何包含字符的內容,代碼將跳轉到 catch 塊,在那里它將正確輸入設定為 false,這將指示回圈必須繼續。我們使用scanner.nextLine() 是因為我們想從掃描器中清除緩沖區。解釋在這里
public static void main(String[] args) {
System.out.println("Enter pin :");
Scanner scanner = new Scanner(System.in);
long pin = 0L;
Boolean correctInput = true;
do {
correctInput = true;
try {
pin = scanner.nextLong();
scanner.nextLine();
} catch (InputMismatchException ex) {
System.out.println("Please type in a number");
correctInput = false;
scanner.nextLine();
}
} while (correctInput == false);
while (pin == 1234) {
System.out.println("Login Successful");
String name = "Admin";
System.out.println("User Name : " name);
break;
}
if (pin != 1234)
System.out.println("Incorrect pin");
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/397099.html
