簡體   English   中英

如何檢查找到兩個向量之間沒有的第一個對象?

[英]How can I check to find the first object free between two vector?

我有這段代碼,並且在創建像這樣的對象之前就已經有了:

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;
}

String objectFull1 = objectName1 + "[" + i + "]"; 永遠不會為null,因此您將永遠無法滿足您的條件。

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

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

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

  • 您需要接收真實的對象引用,而不是它們的名稱。 您不能編寫變量的字符串名稱。 您需要使用實際的。
  • 您不需要使用退出布爾值標志( salir ),最好直接返回解決方案,甚至不使用變量來存儲它( solucion )。
  • 您需要直接與null比較,在這種情況下不要使用equals。
  • 最后,您可以返回-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
}

在聲明的對象與在freeObject方法中進行比較的對象之間沒有關系,在freeObject()中創建對象的方式將導致每個計數器增量都創建新的字符串litral(即非null),因此將導致無限環。 在提交代碼到堆棧溢出之前,請確保測試代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM