2013-12-12 78 views
0

我有這樣的代碼,一個陣列中獲得最高和最低值,以後再打印出所有值的行七:如何檢查是否INT有一個值

int hochstes; 
int niedrig; 
     int q = 0; 
     for(int i = 1; i <= 49; i++){ 
      if(hochstes == null){ 
       hochstes = array[i]; 
       niedrig = hochstes; 
      } 
      if(array[i] > hochstes){ 
       hochstes = array[i]; 
      } 
      if(array[i] < niedrig){ 
       niedrig = array[i]; 
      } 

      q++; 
      if(q == 7){ 
       q = 0; 
       System.out.println(""); 
      }else{ 
       String a = (i < 10) ? " " + i : "" + i; 
       System.out.print(a + ": " + array[i] + " "); 
      } 

     } 

第4行中我嘗試檢查hochstes是否有值,如果沒有,我將數組的第一個(「秒」)值賦給它!當然,它不會工作,以比較hochstesnull我應該使用什麼,而不是謝謝!

+6

「int」總是有一個值,永遠不會是「null」。 – rgettman

+0

我說了什麼? '當然,它不會工作,以比較hochstes與null我應該使用,而不是謝謝! ' –

+1

在你的案例中初始化'hochstes'&'niedrig',其中第一個元素來自 –

回答

6

由於原始類型不能是null,所以您必須以另一種方式來看待它。

最簡單的解決方案是簡單地爲循環外的第一個可能的值賦值,並從第二個值繼續循環。

例如爲:

int hochstes = array[0]; 

// Loop from 1 to higher 

正如Peter Lawrey正確備註:你在指數的指數1開始你的迭代是不一樣的第一指標,記住這一點。許多(如果不是全部的話)數據結構是基於零的,這意味着它們從0開始,而不是1。這就是爲什麼你看到我分配array[0]獲得第一個值。

+0

如果有第一個值或數組不爲空,則可以使用。 –

+0

是的,這裏隱含的假設是至少存在1個值。應在實際實施中添加檢查以避免問題。 –

+3

OP似乎假定第一個元素也是'[1]'! –

0

Java中的值類型不能爲null

你將不得不有一個單獨的boolean變量,初始化爲false。當您將值分配給hochstes時,也將您的布爾值設置爲true。然後檢查你的布爾值,看看這個值是否已經被初始化了。

對於這個特定的目的,你也可以初始化最大值/最小值變量的最小/最大可能值,分別爲:

int hochstes = int.MIN_VALUE; 
int niedrig = int.MAX_VALUE; 

然後,您可以跳過條件語句完全。

+0

,代碼爲'int i;'我沒有任何價值。它不是0,也不能操作。 int只會被賦值爲0,如果它是一個實例 –

+0

@LoganMurphy謝謝,相應編輯;我正在考慮一種不同的語言。 – TypeIA

2

使用包裝類

Integer hochstes = null; 

,你仍然可以進行正常的操作與像一個正常的INT hochstes(比較/設定值等)

4

可以使用定點值。最大限度地使用Integer.MIN_VALUE,最小使用Integer.MAX_VALUE。

int hochstes = Integer.MIN_VALUE; 
int niedrig = Integer.MAX_VALUE; 

for(int i : array) { 
    if(hochstes < i) hochstes = i; 
    if(niedrig > i) niedrig = i; 
} 

使用整數更昂貴,可以爲數組的每個元素創建一個對象。

1

你應該總是初始化你的變量。爲了解決這一點的一種方式可以是使用所述第一元件的陣列作爲最大/最小元素:

int hochstes = array[0]; 
int niedrig = array[0]; 

其它方法是使用最小(或最大)可用值爲您的變量初始化:

int hochstes = Integer.MIN_VALUE; 
int niedrig = Integer.MAX_VALUE; 
相關問題