2012-07-11 79 views
1

我正在寫一個Java程序,我正在檢查一個字符串的列表,然後做一些事情。在FORTRAN我會寫沿Java中'where'fortran關鍵字的等價性?

where(list(:)==stringToCheck){ 
    ... 
    statements 
    ... 
    } 

線的東西相反,我有for循環的塊的頭痛,如果staments並打破所有的地方。沒有,也許我可以稍微修改代碼,但仍然比fortran感覺效率低得多。

編輯,這是我使出代碼:

for(int idx=0;idx<player.get_charactersOwned().size();idx++) 
      { 
       if(player.get_charactersOwned().get(idx).get_characterName().equals(charName)) 
       { 
        /* Add character to the game 
        * Add game to the character*/ 
        System.out.println("Character "+charName+" Found "); 
        gameToMake.addCharacters(player.get_charactersOwned().get(idx)); 
        player.get_charactersOwned().get(idx).addGame(gameToMake); 
        break; 
       }else 
       { 
        System.err.println("Character "+ charName +" not found"); 
        System.out.println("Shall I add that Character? y/n "); 
        choice = scanner.nextLine(); 
        if(choice.equalsIgnoreCase("y")) 
        { 
         charName = scanner.nextLine(); 
         Character character = new Character(charName); 
         characterTempList.add(character); 
         player.addCharacter(characterTempList); 
         gameToMake.addCharacters(player.get_charactersOwned().get(idx)); 
         player.get_charactersOwned().get(idx).addGame(gameToMake); 
         break; 
        }else{break;} 
       } 
      } 

由於誘人,因爲它是修復這個代碼,我寧願用周圍的工作。

有沒有Java的equivilant沒有使用外部庫?

+1

如果在所有的選項,你應該嘗試的Scala,這也運行在JVM上,有一個非常強大的集合API,與像你問的一個特徵對於。 – Eduardo 2012-07-11 09:11:54

+0

「根據字符串檢查列表」意味着您想知道列表是否包含字符串? – 2012-07-11 09:12:23

+0

@PetteriHietavirta是的,基本上。 – Pureferret 2012-07-11 09:15:21

回答

2

不,在Java中沒有等價物。相反,如果你需要檢查是否字符(各自的名稱)的列表中包含的字符名稱,然後簡單地做到這一點:

// search the name 
boolean found = false; 
for (Character c : player.get_charactersOwned()) { 
    if (c.get_characterName().equals(charName)) { 
     found = true; 
     break; 
    } 
} 

// perform the check 
if (found) { 
    // do something 
} else { 
    // do something else 
} 

順便說一下,Character是你們班的名聲,它擦出Java自己的Character類。如果可能的話重命名,以避免混淆。另外,循環也可以寫成這樣:

boolean found = false; 
for (int i = 0, n = player.get_charactersOwned().size(); i < n && !found; i++) { 
    Character c = player.get_charactersOwned().get(i); 
    if (c.get_characterName().equals(charName)) { 
     found = true; 
    } 
} 
+0

'get_characterName()'僅在字符上運行,不在其中。現在想要超載該功能。 – Pureferret 2012-07-11 09:35:40

+0

@Pureferret上面的(更新後的)代碼在列表中的每個_character_上調用'get_characterName()',而不是在列表本身 – 2012-07-11 09:39:30

+0

我已經將上面的檢查轉換成了返回bool的'Player'類的函數,並且那麼我可以在我的'main'函數中調用它。我仍然想知道是否有相當於「哪裏」的情況。 – Pureferret 2012-07-11 09:51:49