Java 缺少的返回语句是否可以修复?

Java 缺少的返回语句是否可以修复?,java,Java,我不知道为什么这总是编译说它缺少一个返回语句,如果有人可以帮助我,那将是伟大的!我试了几个小时,仍然不明白为什么这段代码无法编译。我对java不是很在行,但这段代码在我看来很完美 import java.awt.Color; import java.awt.Graphics; import java.awt.Point; import java.awt.Rectangle; import javax.swing.JFrame; import javax.swing.JOptionPane;

我不知道为什么这总是编译说它缺少一个返回语句,如果有人可以帮助我,那将是伟大的!我试了几个小时,仍然不明白为什么这段代码无法编译。我对java不是很在行,但这段代码在我看来很完美

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.Rectangle;

import javax.swing.JFrame;
import javax.swing.JOptionPane;

import net.xotiksys.api.ActiveScript;
import net.xotiksys.api.Manifest;
import net.xotiksys.api.methods.input.Mouse;
import net.xotiksys.api.methods.recognition.ColorRecognition;
import net.xotiksys.api.painting.Paintable;
import net.xotiksys.api.util.Time;

@Manifest(author = "iwrestledabearonce", description = "Auto Miner with bank support", name = "MiningBot", version = 1.0)
public class MiningBot extends ActiveScript implements Paintable {

    private int Mined;
    private Color ITEM = new Color(0, 0, 0);
    private static final Color addy = new Color(74, 93, 74);
    private static final Rectangle magicTab = new Rectangle(629, 170, 28, 30);
    private static final Rectangle inv = new Rectangle(551, 206, 185, 255);
    private static final Rectangle GFrame = new Rectangle(2, 3, 517, 339);
    private static final long START_TIME = System.currentTimeMillis();
    private Point ROCK = null;
    private Point rockToMine = null;
    private String Status = "Starting Auto Miner by iwrestledabearonce - Version 1.0 - Please be patient...";
    private String TempColor = "";

    @Override
    public int script() {
        Time.sleep(700);
        if (ROCK != null) {
            startMining(); //by iwrestledabearonce
        }
        else
            return 700;
    }

    public void startMining() {
    do {
            ROCK = ColorRecognition.getPoint(addy, 2, inv);
            rockToMine = ColorRecognition.getPoint(ITEM, 2, inv);
                if (ROCK != null) {
                    Mouse.click(ROCK, 0, 0, true);
                    Time.sleep(700);
                    Mined++;
                    Status = "Mining Ore...";
                    stopScript();
            } while (ROCKS != null && validate());
    }



    public void paint(final Graphics g) {
        g.setColor(Color.ORANGE);
        int ycoord = 349;
        g.drawString("Status: " + Status, 15, ycoord += 10);
        g.drawString("Rock's Mined: " + Mined, 15, ycoord += 20);
        g.drawString("Run Time: "+ Time.format(System.currentTimeMillis() - START_TIME),15, ycoord += 30);
    }
}
上面的新代码现在会在下面创建此错误:

Scripts\MiningBot.java:52: error: while expected
        }
         ^
Scripts\MiningBot.java:56: error: illegal start of expression
        public void paint(final Graphics g) {
               ^
Scripts\MiningBot.java:56: error: ')' expected
        public void paint(final Graphics g) {
                   ^
Scripts\MiningBot.java:56: error: ';' expected
        public void paint(final Graphics g) {
                         ^
Scripts\MiningBot.java:56: error: ';' expected
        public void paint(final Graphics g) {
                                          ^
Scripts\MiningBot.java:63: error: reached end of file while parsing
}
 ^
6 errors

C:\Users\TJ\Desktop\XotikColor>pause
Press any key to continue . . .

此处仅在else块而非if块的情况下返回:

public int script() {
        Time.sleep(700);
        if (ROCK != null) {
            startMining(); //by iwrestledabearonce
        }
        else
            return 700;
    }

您应该从所有可能的分支返回一些值,而不仅仅是一个

问题在于
脚本
方法。您应该始终返回一个值。我将展示编译器如何读取您的代码:

public int script() {
    Time.sleep(700);
    if (ROCK != null) {
        startMining(); //by iwrestledabearonce
    } else {
        return 700;
    }
    //where's the result?
}
为了使其工作,请更改方法以返回某些内容。一种方法是从
if
代码块中删除
else
,如图所示:

public int script() {
    Time.sleep(700);
    if (ROCK != null) {
        startMining(); //by iwrestledabearonce
    }
    return 700;
}

丢失
否则

    public int script() {
        Time.sleep(700);
        if (ROCK != null) {
            startMining(); //by iwrestledabearonce
        } // ELSE REMOVED
        return 700;
    }

这是因为您启动了一个else语句,但没有关闭它。删除else语句或执行以下操作:

    public int script() {
        Time.sleep(700);
        if (ROCK != null) {
            startMining(); //by iwrestledabearonce
        } else {}
        return 700;

出现问题的原因是,如果
(ROCK!=null)
false
700
将被返回,如果
为true
将返回什么???因此,在
if block
中也添加
return
语句

public int script() {
        Time.sleep(700);
        if (ROCK != null) {
            startMining(); //by iwrestledabearonce
        }
        else
            return 700;
    }

编辑:看起来你在程序中额外粘贴了一个{或},这就把整个事情都搞糟了。撤消所做的任何更改,从public int script()通过}after return(700)擦除整个块,并粘贴以下内容:

public int script() {
    Time.sleep(700);
    if (ROCK != null) {
        startMining(); //by iwrestledabearonce
    } else {}
    return 700;
}

请在代码中包含行号。这样我们就可以帮你调试错误了,你什么都没做。我用别人告诉我的最新代码和错误编辑了我的帖子