Java robots.getPixelColor if else 语句不起作用

问题描述 投票:0回答:2

我是 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);
            }

        }
    }
    }
java awtrobot
2个回答
0
投票
var color = robot.getPixelColor(1802, 762);

你应该在这里放置 Color 而不是 var

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

0
投票

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

它将与

一起使用

var a = "一个字符串" 变量 b = 2

但是它可能不适用于

var c = 新对象()

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

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

© www.soinside.com 2019 - 2024. All rights reserved.