逻辑问题A或C(C和B)

时间:2015-08-18 15:01:34

标签: java logic operation

我有一个拖放事件的代码:

if (event.getType().equals("mousedown")){
    isMouseDown = true;
}

if (event.getType().equals("mouseup")){
    isMouseDown = false;
}

if (event.getType().equals("mouseout")){
    isMouseDown = false;
}

if (event.getType().equals("mousemove")){
    if (isMouseDown)
        thisMove(event);    
}

我怎样才能通过我尝试的更好的逻辑来缩短这个

isMouseDown = event.getType().equals("mousedown") && !(event.getType().equals("mousemove") && isMouseDown);

if (event.getType().equals("mousemove") && isMouseDown)
    thisMove(event);

但错了......

5 个答案:

答案 0 :(得分:2)

尝试使用如下所示的开关语句:

switch(event.getType()) {
    case "mousedown":
        code block
        break;
    case "mouseup":
        code block
        break;
    default:
        default code block}

答案 1 :(得分:1)

您可以按照以下方式更改代码:

   switch(event.getType()){
        case "mousedown":
            isMouseDown = true;
            break;
        case "mouseup":
        case "mouseout":
            isMouseDown=false;
            break;
        case "mousemove":
            if(isMouseDown)  thisMove(event);
            break;
        default:
            break;
    }

答案 2 :(得分:0)

为什么不使用默认值,如果如下,则使用默认值:

isMouseDown = false;
if (event.getType().equals("mousedown"))
{
    isMouseDown = true;
}
if (event.getType().equals("mousemove"))
{
     if (isMouseDown)
           thisMove(event);
}

我知道切换会是更好的选择。但以防万一......

答案 3 :(得分:0)

如果您需要跟踪状态(在您的情况下为isMouseDown),通常更容易(并且更好)将该状态封装在对象中以及使用该状态的功能。

class Mouse {

    boolean down = false;

    public void event(Event event) {
        switch (event.getType()) {
            case MouseDown:
                down = true;
                break;
            case MouseUp:
            case MouseOut:
                down = false;
                break;

            case MouseMove:
                if (down) {
                    thisMove(event);
                }
                break;
            default:
                break;
        }
    }
}

private static class Event {

    enum Type {

        MouseDown, MouseUp, MouseMove, MouseOut;
    }

    public Event() {
    }

    private Type getType() {
        return null;
    }
}

答案 4 :(得分:0)

您仍然可以按照原来编写代码的方式编写代码。这是逻辑。

    String t = event.getType();        
    isMouseDown = t.equals("mousedown") ||  !(t.equals("mouseup")) &&  !(t.equals("mouseout")) && isMouseDown;

    if (t.equals("mousemove") && isMouseDown)
        thisMove(event);