[英]Java label and break error
这是Joachim解决方案之后的代码:
这是我现在得到的错误:
Scripts \\ OHDHerblaw.java:109:错误:未定义标签:label1084 if(getInventoryCount(new int [] {this.Herb})== 0)if(getInventoryCou nt(new int [] {this.Unfinished})== 0 )if(getInventoryCount(new int [] {this.I identified})== 0)中断label417; if(getInventoryCount(new int [] {this.Vials})!= 0)if(getInventoryCount(new int [] {this.Identified})!= 0){if(getInventoryCount(new int [] {this.Vials })!= 0)如果(getInventoryCount(new int [] {t his.Identified})!= 0)打破label1084; if(getInventoryCount(new int [] {this。Unfinished})!= 0)
Scripts \\ OHDHerblaw.java:110:错误:未定义标签:label1084 break label1084; }
Scripts \\ OHDHerblaw.java:201:错误:未定义标签:label1391 break label1391;
Scripts \\ OHDHerblaw.java:202:错误:未定义标签:label1706 if(getInventoryCount(new int [] {this.Vials})!= 0)if(getInventoryCo unt(new int [] {this.Identified})!= 0 ){if(getInventoryCount(new int [] {thi s.Vials})!= 0)if(getInventoryCount(new int [] {this.Identified})!= 0)brea k label1706; if(getInventoryCount(new int [] {this.Unfinished})!= 0)
Scripts \\ OHDHerblaw.java:203:错误:未定义标签:label1706 break label1706; }
5个错误
我不确定如何定义标签。
经过一番努力之后,我开始努力了。 如果有人感兴趣,这是修改后的代码。
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.InputStreamReader;
public class OHDHerblaw extends Script {
int Herb;
int Identified = 0;
int Unfinished;
int Ingrediant;
int potsMade;
int Vials = 464;
int[] POTARRAY = new int[]{222, 474, 477, 480, 483, 486, 489, 492, 495, 498, 566, 569, 570};
int[] UNIDARRAY = new int[0];
int[] IDARRAY = new int[0];
boolean onlyId = false;
boolean idHerbs = false;
boolean isMixing = false;
boolean unfinishedOnly = false;
public OHDHerblaw(Extension var1) {
super(var1);
}
public void init(String var1) {
String[] var2 = var1.trim().replaceAll(" ", "").split(",");
if(!var2[0].equals("")) {
this.Herb = Integer.parseInt(var2[0]);
if(this.Herb <= 443) {
if(this.Herb == 165 || this.Herb >= 435 && this.Herb <= 443) {
this.idHerbs = true;
this.unfinishedOnly = false;
if(this.Herb == 165) {
this.Identified = 444;
this.Unfinished = 454;
} else if(this.Herb > 165) {
this.Identified = this.Herb + 10;
this.Unfinished = this.Herb + 20;
}
}
} else if(this.Herb >= 444) {
if(this.Herb >= 444 && this.Herb <= 453) {
this.Herb -= 10;
this.Identified = this.Herb + 10;
this.Unfinished = this.Herb + 20;
this.idHerbs = false;
this.unfinishedOnly = false;
} else if(this.Herb >= 454 && this.Herb <= 463) {
this.Herb -= 20;
this.Identified = this.Herb + 10;
this.Unfinished = this.Herb + 20;
this.idHerbs = false;
this.unfinishedOnly = true;
}
} else {
System.out.println("That\'s is not a valid Herb Id...");
this.stopScript();
}
}
if(!var2[1].equals("")) {
this.Ingrediant = Integer.parseInt(var2[1]);
if(this.Ingrediant != 270 && this.Ingrediant != 473 && this.Ingrediant != 220 && this.Ingrediant != 219 && this.Ingrediant != 471 && this.Ingrediant != 469 && this.Ingrediant != 472 && this.Ingrediant != 501) {
System.out.println("No ingredient selected. We will not be making full potions...");
this.Ingrediant = 0;
this.isMixing = false;
} else {
this.isMixing = true;
}
}
if(this.unfinishedOnly && !this.isMixing) {
System.out.println("Not possible, please re-check script setup...");
this.stopScript();
}
}
public int main() {
if(this.getFatigue() >= 90) {
this.useSleepingBag();
return this.random(800, 1000);
} else {
if(!this.onlyId) {
int[] var1;
if(this.isMixing) {
if(this.idHerbs && this.getInventoryCount(new int[]{this.Herb}) > 0) {
this.useItem(this.getInventoryIndex(new int[]{this.Herb}));
return this.random(200, 350);
}
if(this.getInventoryCount(new int[]{this.Identified}) > 0 && this.getInventoryCount(new int[]{this.Vials}) > 0 && this.getInventoryCount(new int[]{this.Herb}) == 0) {
this.useItemWithItem(this.getInventoryIndex(new int[]{this.Identified}), this.getInventoryIndex(new int[]{this.Vials}));
return this.random(200, 350);
}
if(this.getInventoryCount(new int[]{this.Ingrediant}) > 0 && this.getInventoryCount(new int[]{this.Unfinished}) > 0) {
this.useItemWithItem(this.getInventoryIndex(new int[]{this.Ingrediant}), this.getInventoryIndex(new int[]{this.Unfinished}));
return this.random(500, 600);
}
if(this.getInventoryCount(new int[]{this.Herb}) == 0 && this.getInventoryCount(new int[]{this.Unfinished}) == 0 && this.getInventoryCount(new int[]{this.Identified}) == 0 || this.getInventoryCount(new int[]{this.Vials}) == 0 || this.getInventoryCount(new int[]{this.Identified}) == 0 || (this.getInventoryCount(new int[]{this.Vials}) == 0 || this.getInventoryCount(new int[]{this.Identified}) == 0) && this.getInventoryCount(new int[]{this.Unfinished}) == 0) {
if(this.isQuestMenu()) {
this.answer(0);
return this.random(2000, 3000);
}
if(this.isBanking()) {
int var2;
if(this.unfinishedOnly) {
if(this.getInventoryCount(new int[]{this.Ingrediant}) == 0 || this.getInventoryCount(new int[]{this.Unfinished}) == 0) {
for(var2 = 0; var2 < this.POTARRAY.length; ++var2) {
if(this.getInventoryCount(new int[]{this.POTARRAY[var2]}) > 0) {
this.deposit(this.POTARRAY[var2], this.getInventoryCount(new int[]{this.POTARRAY[var2]}));
return this.random(1250, 1500);
}
}
}
if(this.getInventoryCount(new int[]{this.Unfinished}) == 0) {
this.withdraw(this.Unfinished, 14);
return this.random(1500, 2000);
}
if(this.getInventoryCount(new int[]{this.Ingrediant}) == 0 && this.getInventoryCount(new int[]{this.Unfinished}) > 0) {
this.withdraw(this.Identified, this.getInventoryCount(new int[]{this.Unfinished}));
return this.random(1500, 2000);
}
this.closeBank();
return this.random(200, 300);
}
if(!this.unfinishedOnly) {
if(this.getInventoryCount(new int[]{this.Ingrediant}) == 0 || this.getInventoryCount(new int[]{this.Unfinished}) == 0) {
for(var2 = 0; var2 < this.POTARRAY.length; ++var2) {
if(this.getInventoryCount(new int[]{this.POTARRAY[var2]}) > 0) {
this.deposit(this.POTARRAY[var2], this.getInventoryCount(new int[]{this.POTARRAY[var2]}));
return this.random(1250, 1500);
}
}
}
if(this.getInventoryCount(new int[]{this.Unfinished}) > 0) {
this.withdraw(this.Ingrediant, this.getInventoryCount(new int[]{this.Unfinished}));
this.closeBank();
return this.random(2000, 3000);
}
if(this.getInventoryCount(new int[]{this.Vials}) == 0) {
this.withdraw(this.Vials, 14);
return this.random(1000, 1500);
}
if(this.getInventoryCount(new int[]{this.Herb}) == 0 && this.getInventoryCount(new int[]{this.Unfinished}) == 0 && this.getInventoryCount(new int[]{this.Identified}) == 0 && this.idHerbs) {
this.withdraw(this.Herb, 14);
return this.random(2000, 3000);
}
if(this.getInventoryCount(new int[]{this.Identified}) == 0) {
this.withdraw(this.Identified, 14);
return this.random(1000, 1500);
}
this.closeBank();
return this.random(1000, 1500);
}
}
var1 = this.getNpcByIdNotTalk(this.BANKERS);
if(var1[0] != -1 && !this.isBanking() && !this.isQuestMenu() && this.getInventoryCount(new int[]{this.Ingrediant}) == 0) {
this.talkToNpc(var1[0]);
return this.random(3250, 3500);
}
}
}
if(!this.isMixing) {
if(this.idHerbs && this.getInventoryCount(new int[]{this.Herb}) > 0) {
this.useItem(this.getInventoryIndex(new int[]{this.Herb}));
return this.random(200, 350);
}
if(this.getInventoryCount(new int[]{this.Identified}) > 0 && this.getInventoryCount(new int[]{this.Vials}) > 0 && this.getInventoryCount(new int[]{this.Herb}) == 0) {
this.useItemWithItem(this.getInventoryIndex(new int[]{this.Identified}), this.getInventoryIndex(new int[]{this.Vials}));
return this.random(200, 350);
}
if(this.getInventoryCount(new int[]{this.Herb}) == 0 && this.getInventoryCount(new int[]{this.Unfinished}) == 0 && this.getInventoryCount(new int[]{this.Vials}) == 0 && this.getInventoryCount(new int[]{this.Identified}) == 0 || this.getInventoryCount(new int[]{this.Vials}) == 0 || this.getInventoryCount(new int[]{this.Identified}) == 0 || (this.getInventoryCount(new int[]{this.Vials}) == 0 || this.getInventoryCount(new int[]{this.Identified}) == 0) && this.getInventoryCount(new int[]{this.Unfinished}) == 0) {
if(this.isQuestMenu()) {
this.answer(0);
return this.random(2000, 3000);
}
if(this.isBanking()) {
if(this.getInventoryCount(new int[]{this.Herb}) == 0 && this.getInventoryCount(new int[]{this.Unfinished}) == 0 && this.getInventoryCount(new int[]{this.Vials}) == 0 && this.getInventoryCount(new int[]{this.Identified}) == 0 && this.idHerbs) {
this.withdraw(this.Herb, 14);
return this.random(2000, 3000);
}
if(this.getInventoryCount(new int[]{this.Unfinished}) > 0) {
this.deposit(this.Unfinished, this.getInventoryCount(new int[]{this.Unfinished}));
return this.random(200, 300);
}
if(this.getInventoryCount(new int[]{this.Vials}) == 0) {
this.withdraw(this.Vials, 14);
return this.random(1000, 1500);
}
if(this.getInventoryCount(new int[]{this.Identified}) == 0) {
this.withdraw(this.Identified, 14);
return this.random(1000, 1500);
}
this.closeBank();
return this.random(1000, 1500);
}
var1 = this.getNpcByIdNotTalk(this.BANKERS);
if(var1[0] != -1 && !this.isBanking() && !this.isQuestMenu()) {
this.talkToNpc(var1[0]);
return this.random(3500, 3750);
}
}
}
}
return this.random(200, 300);
}
}
}
标签只能在语句之前使用(JLS§14.7) 。
局部变量声明不是语句(用JLS讲,它是“块语句”(JLS§14.2) ,它是语句的超集)。
只需移动int[] arrayOfInt;
到标签前面的那一行,您应该会很好:
int[] arrayOfInt;
label417:
if (this.isMixing) {
...
@Joachim的答案已经确定了。
我只想解释为什么...
甲break <label>
语句只能突破到在具有给定标记的当前方法的包围语句。 局部变量声明不能包含break
语句。 因此,局部变量声明上的label
也不能被破坏。
我怀疑您正在尝试像C / C ++ goto
语句一样使用break <label>
语句。 那样行不通。 即使标签被允许在那里,您也将无法使用它。 例如,这同样是错误的:
label: if (i == 1) {
// so something
}
if (i == 2) {
break label; // compilation error
}
分配标签的语法略有不同:
int i;
label12: i = 42; // label on the assignment
如果要为标签分配值,则必须先定义它。
您的情况下,将代码更改为:
if (!this.onlyId)
{
int[] arrayOfInt;
label417:
if (this.isMixing)
{
if (this.idHerbs) {
if (getInventoryCount(new int[] { this.Herb }) > 0) {
useItem(getInventoryIndex(new int[] { this.Herb }));
return random(200, 350);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.