2014-04-07 38 views
0

我有這樣的代碼,我喜歡對象之前創建前:我該如何檢查兩個向量之間的第一個對象?

client[0],youngClient[1],client[2],youngClient[3]... 

和調用此方法我用: int result = freeObject("client","youngClient");

這是代碼....

private static int freeObject(String objectName1, String objectName2){ 
    int i=0, solucion=0; 
    boolean salir = false; 
    do{ 
     String objectFull1 = objectName1 + "[" + i + "]"; 
     String objectFull2 = objectName2 + "[" + i + "]"; 
     if(objectFull1.equals(null) && objectFull2.equals(null)){ 
      solucion = i; 
      salir = true; 
     } 
     i++; 
    }while(!salir); 
    return solucion; 
} 

回答

0

String objectFull1 = objectName1 + "[" + i + "]";永遠不會爲空,所以你永遠不會滿足你的條件。

您應該直接測試字符串參數:

if(objectName1.equals(null) && objectName2.equals(null)){ 
      solucion = i; 
      salir = true; 
     } 
0

看來你嘗試做一些奇怪的東西,如:objectName1 + "[" + i + "]";。你不能做這樣的事情。一些錯誤/改進:

  • 您需要接收真實的對象引用,而不是它們的名稱。你不能寫變量的字符串名稱。你需要使用實際的。
  • 您不需要使用退出布爾標誌(salir),最好直接返回解決方案,即使不使用變量來存儲它(solucion)。
  • 您需要直接與null比較,在這種情況下不要使用等於。
  • 最後,您可以返回-1或任何其他錯誤值,或者甚至是一個異常,以注意到沒有解決方案。

我的建議是:

private static int freeObject(String[] array1, String[] array2) { 
    for(int i = 0; i < array.lenght; i++) { 
     if(array1[i] == null && array2[i] == null) { 
      return i; 
     } 
    } 
    return -1; // or any other no solution mark 
} 
0

有)你聲明的對象和你freeObject方法中比較對象之間沒有關係,你正在創建內部freeObject對象的方式(導致創建新字符串litral(即非空)與每個計數器增量,因此它會導致無限循環。在將它提交到堆棧溢出之前,請確保測試您的代碼。

相關問題