2010-11-10 126 views
2

正如我们所知int是一个原始数据类型,不能为空。 在我的节目我想要做健康检查如int我!=“”,但它说,运营商!=不能应用到int,空。如何在Java中处理“int i!=”“”或“int i!= null”语句?

任何解决方案?

编辑:

我已经知道,它不能持有这两件事情我是想提出我requiremnet检查我是从另一台服务器获取它是否recived一定值的参数,或者如果它是空的。

+0

看到这个问题:http://stackoverflow.com/questions/985151/how-to-present-the-nullable-primitive-type-in​​t-in-java – Vlad 2010-11-10 07:47:59

+0

因为我永远不会是“”或null,所以没有必要检查。你想要检查什么? – Grodriguez 2010-11-10 08:01:54

+0

@Grodriguez:希望我的编辑能回答你。 – 2010-11-10 08:04:21

回答

0

非常感谢大家的宝贵意见,他们都很有帮助。我的情况发生了什么是我得到的输入是一个字符串,但不幸我还不知道,所以现在我只是比较该字符串“”,并检查空的条件,如果有一个值,我将它转换回INT。 :)

4

编译器不说话未真理。

INT无法容纳,所以没有必要检查""null

+0

谢谢,但我已经知道,它不能容纳这两件事情,我试图提出我的requiremnet检查我从另一台服务器获取的参数,如果它已经收到了一些价值或如果它的空。 – 2010-11-10 08:01:23

+1

@Mohsin如果服务器应该专门返回int,而不能返回这些值,但是如果它的写入返回的字符串比你将它转换为int而不是检查是OK的。 – 2010-11-10 08:06:03

3

你应该检查一下,“我!= - 1”“我!= 0”或任何其他哪个更适合您的需求。

+0

这些值可能会出现这就是为什么我不能检查他们知道如果任何值是在整数或不。 – 2010-11-10 08:02:23

+0

检查变量i中永远不会出现的值。必须有一定的价值。 – Mudassir 2010-11-10 10:27:31

1

int数据类型包含一个整数,所以你可以用一个字符串或null不能比拟的。这是一个编译器错误

1

如果您有一个不同于整数范围的值,则使用包装类型Integer - 它有一个附加值 - null。所以你可以这样做:if (i != null) {..}

然而,为了有一个特殊的null价值,使用包装类型是很不明智的。您可以使用Integer.MAX_VALUE作为默认值。

1

只有两种可能性,我能想到的:

  • 根据您的变量值的有效范围内,包含“0”或值初始化为“-1”将其标记为未使用/空。

  • 你可以使用java.lang.Integer中,而不是只有实例它传递的int值,如果你真的使用它。然而,如果你的变量变化很大,这会导致很多对象创建,因为Integer对象默认是不可变的。因此,每次更改值都会导致需要创建的新Integer对象。

1
  • INT接受的范围内的整数 值
  • “的” 是一个字符串,而不是一个int。
  • null被用于引用不整数 (或其它原语)。

真正的问题是你为什么要做这样的比较?

1

如果需要/期望“null - 状态”的整数值,那么你将不得不使用包装类:

Integer maybeNull = getValueFromDatabase(); 
if (mybeNull != null) { 
    int i = maybeNull; // outboxing, works with Java 1.5+ 
} else { 
    // column value on database was `NULL` 
} 
1

创建一个Nullable类一拉C#。

class Nullable<A> { 
    private A value = null; 

    private Nullable(A value) { 
    this.value = value; 
    } 

    public static <A> Nullable<A> withValue(A value) { 
    return new Nullable<A>(value); 
    } 

    public static <A> Nullable<A> empty() { 
    return new Nullable<A>(null); 
    } 

    public boolean hasValue() { 
    return value != null; 
    } 

    public A getValue() { 
    return value; 
    } 

    public void setValue(A value) { 
    this.value = value; 
    }  

    // Implement toString, equals, hashCode etc. 
} 

,然后用它作为:

Nullable<Integer> ix = Nullable.<Integer>empty(); 
if(ix.hasValue()) { 
    int i = ix.getValue(); 
    // do operations with i 
} else { 
    // handle the 'null' case 
} 
1

可以使用整型包装类这样的比较。否则,如果未指定其他类型,则原始int(如果作为类字段)默认为0。

2

您想查看是否为该参数提交了一个值,但是您将它放在原始类型中。这是不可能的。

我假设你正在使用某种框架与其他服务器通信。如果从框架收到的值已经是一个整数,它将始终有一个值。该框架将默认为您(该值可能为零)。

你需要一个框架,它会给你一个整数,而不是整数。在这种情况下,如果没有给出值,它会给你null。

由于int不能有'没有值',所以没有办法检查int是否没有值。

0

,如果你面对的 <运营商的问题!=不适用于long和int> 只需用长在你右手边 即价值!= 1L 完蛋了..

+0

考虑改写格式 - 你的答案真的很难阅读! – GhostCat 2017-10-13 10:49:08

0

强制转换为int /长帮我的.jsp上 - 页:

<%if ((long)request.getAttribute("amount") != 0) { 
     out.println(request.getAttribute("amount"));} 
    else {out.println(payments.getAmount());}%> 
相关问题