Java 逻辑问题A或C(C和B)
我得到了拖放事件的以下代码:Java 逻辑问题A或C(C和B),java,logic,operation,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("m
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);
但这是错误的…请尝试使用以下switch语句:
switch(event.getType()) {
case "mousedown":
code block
break;
case "mouseup":
code block
break;
default:
default code block}
尝试使用如下所示的switch语句:
switch(event.getType()) {
case "mousedown":
code block
break;
case "mouseup":
code block
break;
default:
default code block}
尝试使用如下所示的switch语句:
switch(event.getType()) {
case "mousedown":
code block
break;
case "mouseup":
code block
break;
default:
default code block}
尝试使用如下所示的switch语句:
switch(event.getType()) {
case "mousedown":
code block
break;
case "mouseup":
code block
break;
default:
default code block}
您可以按如下方式更改代码:
switch(event.getType()){
case "mousedown":
isMouseDown = true;
break;
case "mouseup":
case "mouseout":
isMouseDown=false;
break;
case "mousemove":
if(isMouseDown) thisMove(event);
break;
default:
break;
}
您可以按如下方式更改代码:
switch(event.getType()){
case "mousedown":
isMouseDown = true;
break;
case "mouseup":
case "mouseout":
isMouseDown=false;
break;
case "mousemove":
if(isMouseDown) thisMove(event);
break;
default:
break;
}
您可以按如下方式更改代码:
switch(event.getType()){
case "mousedown":
isMouseDown = true;
break;
case "mouseup":
case "mouseout":
isMouseDown=false;
break;
case "mousemove":
if(isMouseDown) thisMove(event);
break;
default:
break;
}
您可以按如下方式更改代码:
switch(event.getType()){
case "mousedown":
isMouseDown = true;
break;
case "mouseup":
case "mouseout":
isMouseDown=false;
break;
case "mousemove":
if(isMouseDown) thisMove(event);
break;
default:
break;
}
为什么不使用默认值和一个,如果如下所示:
isMouseDown = false;
if (event.getType().equals("mousedown"))
{
isMouseDown = true;
}
if (event.getType().equals("mousemove"))
{
if (isMouseDown)
thisMove(event);
}
我知道切换是个更好的选择。但以防万一……为什么不使用默认值和一个值,如果如下所示:
isMouseDown = false;
if (event.getType().equals("mousedown"))
{
isMouseDown = true;
}
if (event.getType().equals("mousemove"))
{
if (isMouseDown)
thisMove(event);
}
我知道切换是个更好的选择。但以防万一……为什么不使用默认值和一个值,如果如下所示:
isMouseDown = false;
if (event.getType().equals("mousedown"))
{
isMouseDown = true;
}
if (event.getType().equals("mousemove"))
{
if (isMouseDown)
thisMove(event);
}
我知道切换是个更好的选择。但以防万一……为什么不使用默认值和一个值,如果如下所示:
isMouseDown = false;
if (event.getType().equals("mousedown"))
{
isMouseDown = true;
}
if (event.getType().equals("mousemove"))
{
if (isMouseDown)
thisMove(event);
}
我知道切换是个更好的选择。但以防万一……如果您需要跟踪状态(
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;
}
}
如果需要跟踪状态(
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;
}
}
如果需要跟踪状态(
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;
}
}
如果需要跟踪状态(
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;
}
}
您仍然可以用与最初编写代码类似的方式编写代码。逻辑是这样的
String t = event.getType();
isMouseDown = t.equals("mousedown") || !(t.equals("mouseup")) && !(t.equals("mouseout")) && isMouseDown;
if (t.equals("mousemove") && isMouseDown)
thisMove(event);
您仍然可以用与最初编写代码类似的方式编写代码。逻辑是这样的
String t = event.getType();
isMouseDown = t.equals("mousedown") || !(t.equals("mouseup")) && !(t.equals("mouseout")) && isMouseDown;
if (t.equals("mousemove") && isMouseDown)
thisMove(event);
您仍然可以用与最初编写代码类似的方式编写代码。逻辑是这样的
String t = event.getType();
isMouseDown = t.equals("mousedown") || !(t.equals("mouseup")) && !(t.equals("mouseout")) && isMouseDown;
if (t.equals("mousemove") && isMouseDown)
thisMove(event);
您仍然可以用与最初编写代码类似的方式编写代码。逻辑是这样的
String t = event.getType();
isMouseDown = t.equals("mousedown") || !(t.equals("mouseup")) && !(t.equals("mouseout")) && isMouseDown;
if (t.equals("mousemove") && isMouseDown)
thisMove(event);
一个开关可能比一个长逻辑表达式好。在这种情况下,开关是“专业的”吗?是的,开关是@user3369579A您想要做的事情。一个开关可能比一个长逻辑表达式好。在这种情况下,开关是“专业的”吗?是的,开关是您想要做的@user3369579A开关可能比长逻辑表达式更好。在这种情况下开关是“专业的”吗?是的,开关是您想要做的@user3369579A开关可能比长逻辑表达式更好。在这种情况下开关是“专业的”吗?是的,切换是您在@user3369579处要执行的操作。回答得好。注意:如果你想让它保持为空,你可以删除
default
子句。回答得好。注意:如果你想让它保持为空,你可以删除default
子句。回答得好。注意:如果你想让它保持为空,你可以删除default
子句。回答得好。注意:如果你想让它一直为空,你可以完全删除default
子句。最好写(“mousedown.equals”(“vent.getType())“mousedown”永远不会为空。所以你永远不会有NPE,如果vent.getType()为空,它仍然是假的。在你的代码中,thisMove(event)
将永远不会执行,因为当程序控件进入if(event.getType().equals(“mousemove”)时,isMouseDown
为false@d\u air,如果mousedown事件发生,为什么会为false?这不是OP想要的。它应该只在mousedown的情况下为true,否则为false?我刚开始时将其设置为false,只有在mousedown发生时才为true…@code如果mousemove事件发生,isMouseDown
变量为false,因为程序控制l不会执行语句isMouseDown=true;
。在OP的逻辑中,如果发生mousemove事件,则根据它的旧值,isMouseDown
可能为true。因此OP的代码有机会执行thisMove(事件)
。更好地编写(“mousedown”。等于(“vent.getType())“mousedown”从不为null。因此,您永远不会有NPE,如果vent.getType()为null,它仍然为false。在您的代码中,thisMove(event)
将永远不会执行,因为当程序控件进入if(event.getType().equals(“mousemove”)时,isMouseDown
为false
@d\u air,如果mousedown事件发生,为什么会为false?这不是OP想要的。它应该只在mousedown的情况下为true,否则为false?我刚开始时将其设置为false,只有在mousedown发生时才为true…@code如果mousemove事件发生,isMouseDown
变量为false,因为程序控制l不会执行语句isMouseDown=true;
。在OP的逻辑中,如果发生mousemove事件,则根据其旧值,isMouseDown
可能为true。因此OP的代码有机会执行thisMove(event)
。更好地编写(“mousedown.equals”(“vent.getType())“mousedown从不为null。因此,您永远不会有NPE,如果vent.getType()为null,它仍然为false。在您的代码中,thisMove(event)
将永远不会执行,因为当程序控件进入if(event.getType().equals(“mousemove”)时,isMouseDown
为false
@d\u air,如果mousedown事件发生,为什么会为false?这不是OP想要的。只有在mousedown事件发生时才为true,否则为false?我刚开始时将其设置为false,只有在mousedown事件发生时才为true…@Codeek如果mousemove事件发生,则为mousedown<