Java 使用illegalargumentexception检查方法参数是否为null

Java 使用illegalargumentexception检查方法参数是否为null,java,templates,exception,Java,Templates,Exception,当b为空时,我试图打印异常消息。但是,当我运行程序,不输入任何内容并按enter键时,它仍在等待。如果我键入null或任何其他stringnot number,number可以正常工作,它会给出如下所示的异常 public a<X> insert(X b) { if ((b.equals(null))|| (b==null)||(b.equals("null"))||(b.equals("NULL"))){ throw new Illeg

当b为空时,我试图打印异常消息。但是,当我运行程序,不输入任何内容并按enter键时,它仍在等待。如果我键入null或任何其他stringnot number,number可以正常工作,它会给出如下所示的异常

public a<X> insert(X b) {

          if ((b.equals(null))|| (b==null)||(b.equals("null"))||(b.equals("NULL"))){
            throw new IllegalArgumentException("Illegal Argument Exception"); 
        }
        return null;

    }

通常,您不应该使用任何Java方法,而不至少阅读一次其文档

这个方法说:

将输入的下一个标记扫描为int。调用此形式为nextInt的方法的行为与调用nextIntradix的行为完全相同,其中radix是此扫描仪的默认基数

因此,如果我们采纳该文档的建议并查看

将输入的下一个标记扫描为int。如果下一个标记无法转换为有效的int值(如下所述),则此方法将抛出InputMismatchException

创建扫描仪时,分隔符为中所述的空白。当扫描器被要求读取一个值时,它将继续忽略空白,直到遇到非空白的内容。换行符是空白,这就是为什么扫描器忽略您按Enter键的原因。它还在等一个代币

正如文档所述,字母字符无法转换为默认基数(即10)中的有效int值,因此当您输入null之类的内容时,它会抛出一个InputMismatchException,就像它承诺的那样

您的insert方法与此无关


如果您想让代码处理非数字输入,请捕获InputMismatchException,或者使用next而不是nextInt,自己用数字格式解析字符串。

在b.equalsnull | | b==null-b.equalsnull中没有意义。主要问题不是条件。它可以更改。问题是,例如,当我键入时,字符串当X为int时,我应该得到非法参数异常,但我得到的是如上所述的错误消息。您可以共享一个更完整的片段,其中还包括您对扫描仪的使用吗?@Sam如果您输入的内容不是整数,nextInt将抛出InputMismatchException
Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Scanner.java:909)
    at java.util.Scanner.next(Scanner.java:1530)
    at java.util.Scanner.nextInt(Scanner.java:2160)
    at java.util.Scanner.nextInt(Scanner.java:2119)
    at Q.main(a.java:145)