Java 当用户输入字符串而不是int时显示错误消息

Java 当用户输入字符串而不是int时显示错误消息,java,Java,我的程序提示用户输入一个整数 例如: int numbers = keyboard.nextInt(); 因此,当他们输入一个字母时,我的Java程序立即崩溃 如何显示错误消息而不让Java使程序崩溃?使用try-catch语句: Scanner scan = new Scanner(System.in); boolean validInput = false; int val = 0; while(!validInput) { try { val = scan.

我的程序提示用户输入一个
整数

例如:

int numbers = keyboard.nextInt(); 
因此,当他们输入一个字母时,我的Java程序立即崩溃


如何显示错误消息而不让Java使程序崩溃?

使用
try-catch
语句:

Scanner scan = new Scanner(System.in);

boolean validInput = false;
int val = 0;

while(!validInput) {
    try {
        val = scan.nextInt();
        validInput = true;
    } catch(InputMismatchException e) {
        System.out.println("Please enter an integer!");
        scan.next();
    }
}

System.out.println("You entered: " + val);

您可以通过将
输入
作为字符串,并通过
正则表达式
检查它是否为数字来执行此操作,例如:

public static void main(String[] args) throws Exception {
    Scanner scanner = new Scanner(System.in);
    String input = scanner.next();
    if(!input.matches("[\\-]?[0-9]+")){
        System.out.println("Wrong input");
    }
}

在这种情况下,异常会派上用场

异常(或异常事件)是程序执行过程中出现的问题。当发生异常时,程序的正常流程中断,程序/应用程序异常终止,这是不推荐的,因此,应处理这些异常

由于许多不同的原因,可能会发生异常。以下是发生异常的一些场景

用户输入了无效的数据

找不到需要打开的文件

网络连接在通信过程中丢失,或者JVM内存不足。 因此,在您的情况下,请使用try块环绕可能导致错误的代码

当使用将输入错误的类型而不是终止时,您可以决定在屏幕上显示什么

try{
//code that can produce error i.e. input statement
}catch(Exception e){
System.out.println("Enter Integer");
}

你可以用一个try-and-catch语句,最好是用一个try-and-catch语句inputmismatchexception@jthort谢谢,我正要用谷歌搜索一个例外。我将更新应答错误:找不到符号捕获(InputMismatchException e){^@Survivorr您使用的是java还是javascript?您的帖子被标记为两者,但您提供的语法似乎是java。您还需要使用
import java.util.inputmaschException导入
inputmaschException
@tomi added
scan.next()
来解决这个问题。你现在可以取消你的否决票吗?这包括负整数吗?@StefanFreitag否,根据正则表达式,它匹配由数字
0-9
组成的字符串。此外,字符串输入需要通过
Integer.parseInt(输入)转换为
int
。拾取负数的正则表达式字符串应该是
-*[0-9]+
(假设
-
是一个文本,否则需要使用
\-
对其进行转义)@DarshanMehta这并不能解释
1e5
的情况,我认为这是一个适用于Java扫描仪的有效整数。@StefanFreitag我已经更新了答案。它现在也将接受负数。