Java if语句:如何查找值是否等于null?

时间:2014-04-06 16:20:30

标签: java if-statement

我正在尝试允许用户键入两个输入并检查用户是否具有键值,但是它出现错误。这是示例代码

public static void add train{
int a,b;

System.out.println("Enter train ID");
  System.out.println("(**Example '1001'**)");
  b=sc.nextInt();
  System.out.println("1. to Night Safari");
  System.out.println("2. to River Safari");
  System.out.println("3. to Zoo Main Entrance ");
  System.out.println("Enter a destination for the train");
  a= sc.nextInt();
  }

这是我之前从用户那里获取输入的代码,现在我需要预订火车票

public static void book(){
System.out.println("Where do you want to go?");
  System.out.println("1. to Night Safari");
  System.out.println("2. to River Safari");
  System.out.println("3. to Zoo Main Entrance ");
  a=sc.nextInt();
if (a==1 && b !=null){//incomparable types: int and <nulltype>
    System.out.println("Valid");
}
else if (a==2 && b !=null){
    System.out.println("Valid");
}
//and more
else{
    System.out.println("Invalid");
}
}

因为用户可以键入可选项,所以我需要检查列车是否存在才能处理预订 我的代码出了什么问题,或者这是不可能用Java完成的?

7 个答案:

答案 0 :(得分:2)

int永远不能为null,因为它是原始数据类型,因此b !=null是不可计算的。

如果您使用的是Scanner类的nextInt()命令,则它将始终返回一个整数值(如果用户未输入int,则会导致运行时异常)

答案 1 :(得分:1)

根据定义,b的类型为int,而int个变量不能为null

如果您需要能够在null中存储b,则有一种可能性是将其类型更改为Integer

答案 2 :(得分:1)

我认为你误解了null的含义。 null并未引用某个值,而是引用引用(阅读this答案以获取有关它的更多信息)。最重要的是,可以引用null的唯一内容是复杂类型,例如String s,Integer s,您定义的类等。原始类型(int s ,boolean等)不是引用,因此永远不能引用null

答案 3 :(得分:1)

尝试捕获更好,而不是这样。如果用户输入字符串或null,则执行try-catch将保存您。

Scanner sc = new Scanner(System.in);
try
{
    int a = sc.nextInt();
    int b = sc.nextInt();
    System.out.println("valid numbers");
}
catch(InputMismatchException ex)
{
    System.out.println("Invalid numbers");
}

答案 4 :(得分:0)

您可以将int更改为对象类型Integer。然后,您可以将其与null进行比较。

答案 5 :(得分:0)

int不能为null,因为它是基本类型。因此,检查b是否为null是完全错误的,如果我们更正您的代码,它将是这样的:

if (a==1 || a==2){
    System.out.println("Valid");
}
else{
    System.out.println("Invalid");
}

答案 6 :(得分:-3)

如果b应该是int,你可以尝试

if (a==1 && b instanceof int)