我正在编写一个 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/