此代码中的编译错误

时间:2012-01-13 08:24:53

标签: java android

此代码中的编译错误,我该如何修复这个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;
  }

3 个答案:

答案 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。这应该可以解决这个错误。