反编译器代码错误
问题描述:
有人可以帮我解决这个问题。有编译错误$SwitchMap$uk$ac$aber$dcs$blockmotion$gui$Direction
和InputMismatchException
我该写什么呢?反编译器代码错误
以下是整个功能。如果有人能给我一个简短的解释让我明白发生了什么,我会很感激。
private void setSlideNumber(String msg, Direction direction) {
boolean tryAgain = true;
do {
System.out.println(msg);
try {
int ime = Math.abs(this.in.nextInt());
switch(null.$SwitchMap$uk$ac$aber$dcs$blockmotion$gui$Direction[direction.ordinal()]) {
case 1:
this.slideHorizontalLeftNum = -ime;
((SlideTransformer)this.slideHorizontallyLeftTransformer).setAmount(this.slideHorizontalLeftNum);
break;
case 2:
this.slideHorizontalRightNum = ime;
((SlideTransformer)this.slideHorizontallyRightTransformer).setAmount(this.slideHorizontalRightNum);
break;
case 3:
this.slideVerticalUpNum = -ime;
((SlideTransformer)this.slideVerticallyUpTransformer).setAmount(this.slideVerticalUpNum);
break;
case 4:
this.slideVerticalDownNum = ime;
((SlideTransformer)this.slideVerticallyDownTransformer).setAmount(this.slideVerticalDownNum);
}
tryAgain = false;
} catch (InputMismatchException var8) {
System.out.println("Please type a valid number");
} finally {
this.in.nextLine();
}
} while(tryAgain);
}
顺便说一句,Direction
是一个枚举
,这是幻灯片变压器
public abstract class SlideTransformer implements Transformer {
int amount;
public SlideTransformer(int amount) {
this.amount = amount;
}
public int getAmount() {
return this.amount;
}
public void setAmount(int amount) {
this.amount = amount;
}
}
现在枚举方向的代码类:
public enum Direction {
LEFT,
RIGHT,
UP,
DOWN;
private Direction() {
}
}
答
你奇怪的一段代码来自一个类的反编译。
的switch
是在Direction
枚举的序值进行,所以只需更换:
switch(null.$SwitchMap$uk$ac$aber$dcs$blockmotion$gui$Direction[direction.ordinal()])
与
switch(direction.ordinal())
请注意,我们通常switch
直接在枚举,并使用其不同的值,它更直接:
switch(direction){
case LEFT :...
case RIGHT : ...
...
}
什么是nu $ SwitchMap $ uk $ ac $ aber $ dcs $ blockmotion $ gui $方向 – Arvindsinc2
InputMismatchException的错误是什么? –
从哪里得到'null。$ SwitchMap $ uk $ ac $ aber $ dcs $ blockmotion $ gui $ Direction [direction.ordinal()]'这个想法是否正确Java? –