2013-04-18 3 views
1

Я беру класс Java в колледже. Мой преподаватель на самом деле учитель для языков, полученных из C, поэтому она не может понять, что происходит с этим фрагментом кода. Я прочитал на этой странице http://docs.oracle.com/javase/6/docs/api/java/util/List.html, что я могу использовать синтаксис «list []. Add (int index, element)», чтобы добавить определенные объекты или вычисления в конкретные индексы, что уменьшило требуемую кодировку. Программа, которую я собираюсь создать, представляет собой случайный статистический генератор для D & D, для практики. Метод дает ошибку ниже:List.add() Класс Ожидаемый

// 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; 
} 

Моя конечная цель заключается в использовании какого-то отсортированного списка или способа удаления самого низкого значения в наборе. Точка этого метода состоит в том, чтобы сгенерировать 4 случайных числа от 1 до 6, а затем сбросить самые низкие и добавить три высших вместе. Конечным номером будет текст текстового поля, поэтому он преобразуется в строку и возвращается. Остальная часть кода работает правильно, у меня есть только проблемы с этим методом.

Если у кого-то есть идеи, я все уши. Я немного исследовал и нашел что-то об использовании ArrayList, чтобы создать новый объект List, но я не уверен в синтаксисе для него. В заключение я попытался найти этот синтаксис в другом вопросе, но я не смог найти его где-либо в stackoverflow. Извиняюсь, если я что-то пропустил.

+5

Нигде в этой ссылке не говорится что вы можете сделать 'список [] добавить ...' ' –

+3

ИНТ [] НУМС = {}; 'создает и пустет Array не список – blank

+0

Возможно, она не должна преподавать Java, если она этого не знает. Вероятно, вам будет лучше использовать список . – ChadNC

ответ

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 является классом, а не встроенным.

+0

Иногда лучшие ответы самые простые. Я нападаю на себя. Большое спасибо. –

+0

Массив будет иметь только 4 элемента при его обработке. Массив фиксированного размера будет работать очень хорошо, теперь, когда я понимаю концепцию немного лучше. –

4

'int nums []' не является списком, это массив.

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

создает новый ArrayList, например.

Вы можете получить доступ к элементам в списке непосредственно со следующим синтаксисом:

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

Вы можете сортировать списки с классом Коллекции:

Collections.sort(intList); 

Вот некоторые сведения о коллекциях в Java: http://docs.oracle.com/javase/tutorial/collections/

+0

Это так просто? В статье, на которую я смотрел, раньше казалось, что это намного сложнее. Огромное спасибо. –

+0

Просто два дополнения: если вы используете Java 6 или более позднюю версию, вам понадобится следующий синтаксис: 'List intList = new ArrayList ();' и обратите внимание, что Integer не совпадает с int! – Don

2

nums[].add(i, dice.random(6)+1); //Marks 'add' with "error: class expected"

Вы пытаетесь использовать add на массиве. Список - это динамический массив, но это не означает, что массив == Список. вы должны использовать 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); 
+0

также я ожидал бы, что последняя строка начнется с 'nums.add (...', а не 'nums []. Add ('. * Надеюсь, что последняя - ошибка компилятора, иначе это, вероятно, что-то запутывает .. –

+0

Вы должны удалить скобки массива ... – Puce

+0

oops, это была ошибка копирования/вставки. @sotirious Delimanolis Спасибо за редактирование :) – PermGenError

Смежные вопросы