此代码中的编译错误,我该如何修复这个java代码?
任何人都知道如何解决这个问题? label284;
提出了一些问题。
Pastebin:http://pastebin.com/gWKwnqg5
图片:http://i.imgur.com/OwbdR.png
private List<int[]> getDataByAverage()
{
int i = this.money;
Object localObject1 = new ArrayList();
if (this.num != 1)
{
for (int j = 0; j < this.num; j++)
((List)localObject1).add(new int[2]);
i /= this.num;
j = 0;
int k = 0;
while (k < this.num)
{
Object localObject2;
if (k + 1 != this.num)
{
int n;
if (10.0D * Math.random() <= 5.0D)
n = 0;
else
n = 1;
int m = (int)(Math.round(Math.random() * i) / 2L);
localObject2 = (int[])((List)localObject1).get(k);
if (n == 0)
m = i - m;
else
m = i + m;
localObject2[0] = m;
j += ((int[])localObject1.get(k))[0];
}
else
{
localObject2 = new BigDecimal(String.valueOf(this.money));
BigDecimal localBigDecimal = new BigDecimal(String.valueOf(j));
((int[])localObject1.get(k))[0] = ((BigDecimal)localObject2).subtract(localBigDecimal).intValue();
}
if (((int[])localObject1.get(k))[0] >= 0)
{
k++;
continue;
}
localObject1 = getDataByAverage();
break label284;
}
localObject1 = localObject1;
}
else
{
int[] arrayOfInt = new int[2];
arrayOfInt[0] = this.money;
((List)localObject1).add(arrayOfInt);
localObject1 = localObject1;
}
label284: return (List<int[]>)(List<int[]>)localObject1;
}
答案 0 :(得分:1)
我认为标记为break用于退出多个for或while循环。您必须在上面的标签上声明您使用它的位置。 你可以查看here
在使用之前,您必须移动label284:
。
很可能是一种声明我不知道的标签的方法
编辑:这是方法,在整个if (this.num != 1) else { }
例程中添加括号。然后在它之前定义label284:
。
显然,break标签将转到声明的结尾。有关详细信息,请查看here
答案 1 :(得分:1)
尝试:
private List<int[]> getDataByAverage()
{
int i = this.money;
Object localObject1 = new ArrayList();
if (this.num != 1)
{
for (int j = 0; j < this.num; j++)
((List)localObject1).add(new int[2]);
i /= this.num;
j = 0;
int k = 0;
Object localObject2;
if (k + 1 != this.num)
{
int n;
if (10.0D * Math.random() <= 5.0D)
n = 0;
else
n = 1;
int m = (int)(Math.round(Math.random() * i) / 2L);
localObject2 = (int[])((List)localObject1).get(k);
if (n == 0)
m = i - m;
else
m = i + m;
localObject2= m;
j += ((int[])((List<int[]>) localObject1).get(k))[0];
}
else
{
localObject2 = new BigDecimal(String.valueOf(this.money));
BigDecimal localBigDecimal = new BigDecimal(String.valueOf(j));
((int[])((List<int[]>) localObject1).get(k))[0] = ((BigDecimal)localObject2).subtract(localBigDecimal).intValue();
}
if (((int[])((List<int[]>) localObject1).get(k))[0] >= 0)
{
k++;
}
localObject1 = getDataByAverage();
localObject1 = localObject1;
}
else
{
int[] arrayOfInt = new int[2];
arrayOfInt[0] = this.money;
((List)localObject1).add(arrayOfInt);
localObject1 = localObject1;
}
return (List<int[]>)(List<int[]>)localObject1;
}
答案 2 :(得分:0)
将localObject1
声明为List
而不是Object
。这应该可以解决这个错误。