2010-11-10 47 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());}%> 
相關問題