List.add()类预期

时间:2013-04-18 15:24:51

标签: java list

我正在大学学习Java课程。我的导师实际上是从C派生的语言的老师,所以她无法弄清楚这段代码发生了什么。我在本页http://docs.oracle.com/javase/6/docs/api/java/util/List.html上读到,我可以使用语法“list [] .add(int index,element)”将特定对象或计算添加到特定索引中,从而减少了所需的编码量。我想要创建的程序是D& D的随机属性生成器,用于练习。给出错误的方法如下:

// StatGenrator与ActionListener一起使用

private String StatGenerator ()
{
        int finalStat;
        String returnStat;

        //Creates an empty list.
        int[] nums={};

        //Adds a random number from 1-6 to each list element.
        for (int i; i > 4; i++)
            nums[].add(i, dice.random(6)+1); //Marks 'add' with "error: class expected"

        //Sorts the list by decending order, then drops the
        //lowest number by adding the three highest numbers 
        //in the list.            
        Arrays.sort(nums);
        finalStat = nums[1] + nums[2] + nums[3]; 

        //Converts the integer into a string to set into a 
        //texbox.
        returnStat = finalStat.toString();
        return returnStat;
}

我的最终目标是使用某种排序列表或删除集合中最低值的方法。这种方法的要点是从1-6生成4个随机数,然后降低最低值并将三个最高值加在一起。最终的数字将是文本框的文本,因此它将转换为字符串并返回。代码的其余部分正常工作,我只是遇到了这种方法的问题。

如果有人有任何想法,我会全力以赴。我已经研究了一下,发现了一些关于使用ArrayList创建一个新的List对象的东西,但是我不确定它的语法。作为最后一点,我尝试在另一个问题中寻找这种语法,但我无法在stackoverflow上找到它。如果我在某个地方遗漏了某些东西,请道歉。

4 个答案:

答案 0 :(得分:4)

'int nums []'不是List,它是一个数组。

List<Integer> intList = new ArrayList<>();
例如,

创建一个新的ArrayList。

您可以使用以下语法直接访问列表中的元素:

intList.get(0); // Get the first Element

您可以使用Collections类对列表进行排序:

Collections.sort(intList);

以下是有关Java中集合的一些信息:http://docs.oracle.com/javase/tutorial/collections/

答案 1 :(得分:3)

数组是固定大小的,因此您需要在开始时为所有插槽分配空间。然后将数字放入数组中,分配给nums[i]。不需要add()方法。

int[] nums = new int[4];

for (int i = 0; i < 4; i++)
    nums[i] = dice.random(6) + 1;

Arrays.sort(nums);
finalStat = nums[1] + nums[2] + nums[3]; 

或者,如果您确实需要动态大小的数组,请使用ArrayList。 ArrayList可以增长和缩小。

List<Integer> nums = new ArrayList<Integer>();

for (int i = 0; i < 4; i++)
    nums.add(dice.random(6) + 1);

Collections.sort(nums);
finalStat = nums.get(1) + nums.get(2) + nums.get(3); 

请注意,由于ArrayList是一个类而不是内置类型,语法有多么不同。

答案 2 :(得分:2)

  

nums []。add(i,dice.random(6)+1); //标记'添加',带有“错误:类   预期“

您正尝试在阵列上使用add。 List是动态数组,但这并不意味着 array == List 。你应该使用List。

 List<Integer> nums=new ArrayList<Integer>();

//Adds a random number from 1-6 to each list element.
for (int i; i > 4; i++)
    nums.add(i, dice.random(6)+1); 

答案 3 :(得分:0)