1

文字列に対してリストをチェックし、それに対して何かを行うJavaプログラムを書いています。Fortranでは、次の行に沿って何かを書きます

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

代わりに、for ループのブロックの頭痛の種があります。いいえ、おそらくコードを少しきれいにすることはできますが、それでも 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 はありますか?

4

1 に答える 1

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;
    }
}
于 2012-07-11T09:23:08.537 に答える