저는 Java 프로그래밍을 연습 해왔고 최근에는 다른 라이브러리를 사용하는 일부 State 기반 스크립팅에서 손을 잡으려한다고 생각했습니다. 나는 두 번째 경우에 도달 할 수없는 switch 문으로 걸림돌을 때렸다. 이제는 외부 API에 익숙하지 않을 수도 있지만 일반적으로 내 논리에 문제가 있는지 궁금해했습니다. ,이 Java Switch 문을 진행할 수없는 이유는 무엇입니까?
switch (getState()) {
case CUT:
if (!myPlayer().isAnimating() && equipmentTab.isWieldingWeapon(Axe)) {
log("You have an Axe.");
} else {
log("You don't have an axe");
State.WALK_TO_BANK.equals(true);
RS2Object bank = closestObjectForName("Bank Booth");
if (bank != null) {
if (bank.interact("Bank")) {
while (!client.getBank().isOpen())
sleep(250);
client.getBank().withdraw1(Axe);
equipmentTab.equipForNameThatContains(EquipmentSlot.WEAPON, "axe");
State.CUT.equals(true);
}
RS2Object tree = closestObject(TREE_ID);
if (!myPlayer().isInArea(CHOP_AREA) && client.getInventory().isEmpty()) {
State.WALK_TO_TREE.equals(true);
}
if (tree != null) {
if (tree.interact("Chop down"))
sleep(random(1000, 1500));
log("Trying to cut tree");
}
break;
case WALK_TO_BANK: // IDE states- Unable to resolve symbol
status = "Walk to Bank";
traversePath(path, true);
sleep(random(1500, 2500));
break;
case WALK_TO_TREE:
status = "Walk to Tree";
if (!myPlayer().isInArea(CHOP_AREA) || client.getInventory().isEmpty() && equipmentTab.isWieldingWeapon(Axe)) {
log("You have an Axe.");
State.WALK_TO_TREE.equals(true);
}
traversePath(path, false);
sleep(random(1500, 2500));
break;
case BANK:
status = "Banking";
RS2Object bank = closestObjectForName("Bank booth");
if (bank != null) {
if (bank.interact("Bank")) {
while (!client.getBank().isOpen())
sleep(250);
client.getBank().depositAll();
}
}
break;
}
return random(200, 300);
}
절단 된 경우 이동합니다 WALK_TO_BANK 케이스에에 완료하고 후 : 상태는 열거에서 와서 나는 다른 전제 조건에 대해 테스트하는의 getState() 메소드가 있습니다
private enum State {
CUT, WALK_TO_BANK, BANK, WALK_TO_TREE
}
private State getState() {
if (client.getInventory().isFull() && !BANK_AREA.contains(myPlayer()))
return State.WALK_TO_BANK;
if (!client.getInventory().isFull() && !CHOP_AREA.contains(myPlayer()))
return State.WALK_TO_TREE;
if (!client.getInventory().isEmpty() && BANK_AREA.contains(myPlayer()))
return State.BANK;
return State.CUT;
}
스위치 문을 IntelliJ는 기호를 확인할 수 없음을 나타냅니다. 나는 확실히 확신 할 수 없다. 나는 이것에 대해 아주 익숙하기 때문에 내 코드가 효율적 일 수는 없지만 스크립팅에서이 연습을하면 분명히 향상 될 것이다.
당신은 중괄호를 놓친'}'은'break' 전에 가야한다 CUT'의 경우'에서'else' 문을 닫습니다. –
이것은 실제로 코드를 실행 가능하게 만들었습니다. 나는 그 중 2 개를 놓쳤습니다 : /. 도와 주셔서 감사합니다. – user3646185
반갑습니다. –