1

我正在大学里上 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

4 回答 4

4

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

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/

于 2013-04-18T15:27:50.460 回答
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 是一个类而不是内置类型,因此语法有多么不同。

于 2013-04-18T15:27:42.170 回答
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); 
于 2013-04-18T15:28:35.280 回答
0

您正在混合数组和列表。

看看教程:

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html

http://docs.oracle.com/javase/tutorial/collections/index.html

于 2013-04-18T15:29:49.237 回答