Java 缺少的返回语句是否可以修复?
我不知道为什么这总是编译说它缺少一个返回语句,如果有人可以帮助我,那将是伟大的!我试了几个小时,仍然不明白为什么这段代码无法编译。我对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;
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;
}
请在代码中包含行号。这样我们就可以帮你调试错误了,你什么都没做。我用别人告诉我的最新代码和错误编辑了我的帖子