Java robot.getPixelColor如果else语句不起作用

问题描述

我是Java新手,想知道为什么我的if(){} else {}语句无法正常工作。谁能解释为什么? 为了获得更多背景信息,我尝试制作一种自动单击器类型的东西,该东西还可以将鼠标移动到不同的位置以解决基本难题。

这是我到目前为止所拥有的

import java.awt*;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.awt.Color;

class main {


    public static void main (String[] args) throws Exception {
        Robot robot = new Robot();
        robot.mouseMove(1681,679); 
        robot.mousepress(InputEvent.BUTTON1_DOWN_MASK);
        robot.delay(10);
        robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
        robot.delay(1000);
        for (int i = 2; i >= 1; i++) {
            robot.delay(3000);
            var color = robot.getPixelColor(1802,762);
            if (color == Color.white) {
                robot.mouseMove(1700,679); 
                robot.mousepress(InputEvent.BUTTON1_DOWN_MASK);
                robot.delay(10);
                robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
                robot.delay(5000);
                robot.mouseMove(1700,679);
                robot.mousepress(InputEvent.BUTTON1_DOWN_MASK);
                robot.delay(100);//click delay
                robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
                robot.mouseMove(1569,973);
                robot.mousepress(InputEvent.BUTTON1_DOWN_MASK);
                robot.delay(100);
                robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
                robot.delay(200);
                robot.mouseMove(1142,729);
                robot.delay(1500);
                robot.mousepress(InputEvent.BUTTON1_DOWN_MASK);
                robot.delay(100);
                robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
                robot.delay(3000);
                robot.mouseWheel(10);
                robot.mouseMove(391,822);
                robot.delay(500);
                robot.mousepress(InputEvent.BUTTON1_DOWN_MASK);
                robot.delay(100);
                robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
            } else {
                robot.mouseMove(1681,679); 
                robot.mousepress(InputEvent.BUTTON1_DOWN_MASK);
                robot.delay(10);
                robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
                robot.keyPress(KeyEvent.VK_CONTROL);
                robot.keyPress(KeyEvent.VK_R);
                robot.keyrelease(KeyEvent.VK_CONTROL);
                robot.keyrelease(KeyEvent.VK_R);
                robot.delay(10000);
            }

        }
    }
    }

解决方法

var color = robot.getPixelColor(1802,762);

您应该在此处放置颜色而不是var

Color color = robot.getPixelColor(1802,762);
,

var类型在javascript中被大量使用,因为它是一种动态类型化的语言。 Java是一种静态类型的语言,因此在大多数情况下使用Java并非总是一个好主意,因为它会降低可读性。 var类型仅在Java 10中引入。您只能在少数情况下使用var类型。

它将与

一起使用

var a =“一个字符串” var b = 2

但是它可能不适用于

var c = new object()

原因是Java编译器首先不知道右侧的值的类型是什么。因为它是一种类型安全的语言,所以它可以在Javascript上运行,但不能在Java上运行。

因此将var更改为正确的类型(如Color)将是明智的。另外,我注意到您的for循环功能将永远存在。那是你的意图吗?如果没有,建议您仔细检查一下循环计数器或条件语句。