java—如何在for循环的圆括号中放入三元运算符

wr98u20j  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(318)

我最近学习了三元运算符,并通过使我不久前编写的一些旧代码变得更好来练习它们。当我尝试用许多不同的方法对for循环执行此操作时,我似乎不知道如何执行。我试过:

for (hotbarFirst ? (x = 0; x < mc.player.inventoryContainer.getInventory().size(); x++) :
(x = mc.player.inventoryContainer.getInventory().size(); x > 0; x--)) {

for (hotbarFirst ? (x = 0) : (x = mc.player.inventoryContainer.getInventory().size());
hotbarFirst ? (x < mc.player.inventoryContainer.getInventory().size()) : (x > 0); 
hotbarFirst ? (x++) : (x--)){

            }

第一条路给我 unexpected token 第二个错误给了我 not a statement 错误。似乎我应该能够以某种方式做到这一点,所以我只是走错路了,还是有其他方法可以做到这一点,而不做两个for循环。
(忽略函数,它们是为我在其中制作mod的游戏准备的)
(另外,如果你没有注意到我试图迭代一组数字,两个是前后还是前后,取决于bool是真还是假)
原始代码:

public static int getItem(Item itemofChoice, boolean hotbarFirst) {
        if (mc.player == null) return -1;
        for (int x = 0; x < mc.player.inventoryContainer.getInventory().size(); x++) {
            if ((x == 0 || x == 5 || x == 6 || x == 7 || x == 8)) continue;
            ItemStack s = mc.player.inventoryContainer.getInventory().get(x);
            if (s.isEmpty()) continue;
            if (s.getItem().equals(itemofChoice)) return x;
        }
        return -1;

    }

如果bool参数是真的,我会让它以相反的方式迭代

svdrlsy4

svdrlsy41#

这里有一种方法:

int size = mc.player.inventoryContainer.getInventory().size();
for (int x = (hotbarFirst ? 0 : size-1); (hotbarFirst ? x < size : x >= 0) ; x += (hotbarFirst ? 1 : -1)) {
    ...
}

相关问题