2015-11-07 196 views
0

好吧,這不是我在Java中的第一個循環,我已經編寫了一年多的時間,但由於某些原因,我似乎無法在這裏得到這個想法,有一個抽屜,其中包含類別,每個類別都可以/不能有描述,如果用戶試圖添加一個存在的類別,程序首先檢查描述是否相同,如果是,它會提示用戶更改描述或類別,下面是我的代碼,我第一次運行它,它第二次正常工作,它提示用戶的用戶,但也增加了類別而不是返回,任何幫助將不勝感激。 `For循環和如果語句混淆

private void addCategory(String category, String description) 
    { 
    if(drawer.getItems().isEmpty()) { 
     addDrawerItem(category, description); 


    }else { 
     for (int i = 0; i < drawer.getItems().size(); i++) { 

      if (category.toUpperCase().equals(drawer.getItem(i).getTextPrimary()) 
        && description.equals(drawer.getItem(i).getTextSecondary())) { 
       Toast.makeText(getBaseContext(), "Category with same description exists", Toast.LENGTH_SHORT).show(); 

      }else { 

        addDrawerItem(category, description); 
        return; 


      } 

     } 

    } 
}` 
+0

我認爲'toUpperCase()'可以讓你試圖比較時出現問題 –

+0

getTextPrimary中的字符串在Caps中,因此我必須將其轉換爲大寫字母,然後才能進行比較,否則返回false返回所有搜索結果 –

回答

0

這應該更好地工作:

private void addCategory(String category, String description) { 
    if (drawer.getItems().isEmpty()) { 
     addDrawerItem(category, description); 
    } else { 
     for (int i = 0; i < drawer.getItems().size()); i++) { 
      if (category.toUpperCase().equals(drawer.getItem(i).getTextPrimary().toUpperCase()) 
        && description.equals(drawer.getItem(i).getTextSecondary())) { 
       Toast.makeText(getBaseContext(), "Category with same description exists", Toast.LENGTH_SHORT).show(); 
       return; 
      } 
     } 

     addDrawerItem(category, description); 
    } 
} 

環路僅用於查找匹配條目。只有在找不到匹配的情況下才會添加新條目。我還添加了一個toUpperCase()調用,以確保類別測試能夠按照您明顯打算的方式工作。

+0

和它只是工作,非常感謝,它開始讓我緊張。 –