java - 相当于 Java 中的 'where' fortran 关键字吗?

标签 java fortran where-clause equivalent

我正在编写一个 Java 程序,在其中根据字符串检查列表,然后对其进行操作。在 Fortran 中我会写一些类似

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

相反,我对 for 循环 block 感到头疼,if 语句和断点到处都是。不,也许我可以稍微整理一下代码,但它仍然感觉比 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 等效项?

最佳答案

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

关于java - 相当于 Java 中的 'where' fortran 关键字吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11429026/

相关文章:

sql - 在其他谓词(Oracle 分析函数)之前评估分析函数上的 WHERE 谓词

Java:从命令行编译和运行多个包

java - 为什么 QueryParams 的存在会影响 Jersey 匹配顺序?

java - Tomcat7 状态在 Windows 服务中停止

pointers - 派生类型中的关联指针? gFortran 与英特尔

visual-studio - 用 Fortran 编写 DLL/从 Excel 调用

尽管使用了随机种子,但随机数仍然保持不变

sql - SQL 中 where 子句的顺序重要吗?

java - 使用 Apache POI 对单元进行着色

sql - ORACLE SQL,其中结尾需要时间