如何将三元运算符放在 for 循环的括号内
How does one put a ternary operator inside the parenthesis of a for loop
我最近学习了三元运算符,并通过使我不久前写的一些旧代码变得更好来练习它们。当尝试以许多不同的方式对 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 中制作的游戏)
(另外,如果您没有注意到我正在尝试迭代一组从前到后或从前到后的数字,具体取决于布尔值是真还是假)
原码:
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 参数为真,我将尝试使其以相反的方式迭代
这是一种方法:
int size = mc.player.inventoryContainer.getInventory().size();
for (int x = (hotbarFirst ? 0 : size-1); (hotbarFirst ? x < size : x >= 0) ; x += (hotbarFirst ? 1 : -1)) {
...
}
我最近学习了三元运算符,并通过使我不久前写的一些旧代码变得更好来练习它们。当尝试以许多不同的方式对 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 中制作的游戏)
(另外,如果您没有注意到我正在尝试迭代一组从前到后或从前到后的数字,具体取决于布尔值是真还是假)
原码:
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 参数为真,我将尝试使其以相反的方式迭代
这是一种方法:
int size = mc.player.inventoryContainer.getInventory().size();
for (int x = (hotbarFirst ? 0 : size-1); (hotbarFirst ? x < size : x >= 0) ; x += (hotbarFirst ? 1 : -1)) {
...
}