反编译器代码错误

问题描述:

有人可以帮我解决这个问题。有编译错误$SwitchMap$uk$ac$aber$dcs$blockmotion$gui$DirectionInputMismatchException我该写什么呢?反编译器代码错误

以下是整个功能。如果有人能给我一个简短的解释让我明白发生了什么,我会很感激。

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() { 
    } 
} 
+2

什么是nu $ SwitchMap $ uk $ ac $ aber $ dcs $ blockmotion $ gui $方向 – Arvindsinc2

+1

InputMismatchException的错误是什么? –

+0

从哪里得到'null。$ SwitchMap $ uk $ ac $ aber $ dcs $ blockmotion $ gui $ Direction [direction.ordinal()]'这个想法是否正确Java? –

你奇怪的一段代码来自一个类的反编译。

switch是在Direction枚举的序值进行,所以只需更换:

switch(null.$SwitchMap$uk$ac$aber$dcs$blockmotion$gui$Direction[direction.ordinal()]) 

switch(direction.ordinal()) 

请注意,我们通常switch直接在枚举,并使用其不同的值,它更直接:

switch(direction){ 

    case LEFT :... 
    case RIGHT : ... 
    ... 

}