声明,初始化和连接数组问题

时间:2014-12-25 16:38:43

标签: java arrays concatenation

我正在尝试创建代码并且我一直在收到编译器错误(只是检查它,我没有完成)。我做错了什么:

if (numTeams = 20)
  Runner[] allRunners = ArrayUtils.addAll(team1.arrayRunners(), team2.arrayRunners(), 
  team3.arrayRunners(), team4.arrayRunners(), team5.arrayRunners(), team6.arrayRunners(),
  team7.arrayRunners(), team8.arrayRunners(), team9.arrayRunners(), team10.arrayRunners(),
  team11.arrayRunners(), team12.arrayRunners(), team13.arrayRunners(), team14.arrayRunners(),
  team15.arrayRunners(), team16.arrayRunners(), team17.arrayRunners(), team18.arrayRunners(),
  team19.arrayRunners(), team20.arrayRunners());

我有一个ArrayUtils的导入和声明,这样可以吗?

我之前也有这个:

Runner [] allRunners = new Runner[numTeams*7];

扫描numTeams。

我得到的错误是:

xcMeet.java:156: '.class' expected
      Runner[] allRunners = ArrayUtils.addAll(team1.arrayRunners(), team2.arrayRunners(),

xcMeet.java:156: not a statement
      Runner[] allRunners = ArrayUtils.addAll(team1.arrayRunners(), team2.arrayRunners(), 

xcMeet.java:156: illegal start of expression
      Runner[] allRunners = ArrayUtils.addAll(team1.arrayRunners(), team2.arrayRunners(),

xcMeet.java:156: ';' expected
      Runner[] allRunners = ArrayUtils.addAll(team1.arrayRunners(), team2.arrayRunners(),

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

if (numTeams = 20)

不应该是:

if (numTeams == 20)

除此之外,我需要看看team1是什么。看起来它们不是类,或者不是从Object扩展的类。

如果我是你,我会考虑团队[x]而不是硬编码team1,team2,team3。

- 更多 -

好的,我不得不深入挖掘我的一些旧代码,所以让我们看看这是否有帮助,因为我认为这与你正在做的类似。

这生成了ContentValues的ArrayList。发送的项目数和类型类型。

private ArrayList<ContentValues> wondrousCV(int number,ItemType type)
{
    ArrayList<ContentValues> list = new ArrayList<ContentValues>();
    ArrayList<String> wondrous_item = wondrous(number,type);
    ContentValues temp = null; //new ContentValues();
    if (wondrous_item != null)
    {
        for (int i = 0; i < wondrous_item.size();i++)
        {
            temp = new ContentValues();
            temp.put("name", wondrous_item.get(i));
            temp.put("cost", -1);
            temp.put("type", "item");
            list.add(temp);
        }
    }
    else
    {
        list = null;
    }
    return list;
}

它是从另一个函数调用的:

boolean generateTreasureCV(int value, TreasureType type)
{
    // List of strings generated to be the treasure
    treasureCV = new ArrayList<ContentValues>();
    ContentValues temp;

    treasureCV.addAll(wondrousCV(10,3));
    treasureCV.addAll(potionsCV(1,ItemType.LesserMinor));
    treasureCV.addAll(scrollsCV(1,ItemType.LesserMinor));
....}

因此,根据您的需要,您的MasterRunners列表类似于我的treasureCV ArrayList,但类型为runner而不是ContentValues。 addAll只接受一个ArrayList作为参数,因此您需要执行类似

的操作
RunnersList.addAll(Team1.getRunners());
RunnersList.addAll(Team2.getRunners());
RunnersList.addAll(Team3.getRunners());

这就是为什么我建议您改为团队[x],这样你就可以遍历所有团队。

for (int I = 0; I < Team.sizeof; I++)
{
     RunnersList.addAll(Team[I].getRunners());
}

然后,如果您拥有的团队数量不同,则不需要对每个变量大小进行不同的检查

答案 1 :(得分:0)

如果它的Apache的库那么没有这样的方法(addAll)可以采用var-args。 该方法已重载但最多可能需要两个参数。