Проблемы с импортом / библиотекой?
Я работаю над заданием для класса:
Иосиф Флавий В проблеме Иосифа из древности, N людей находятся в тяжелом положении и соглашаются на следующую стратегию по сокращению населения. Они располагаются по кругу (в позициях, пронумерованных от 0 до N???1) и проходят по кругу, устраняя каждого Mth человека, пока не останется только один человек. Легенда гласит, что Иосиф выяснил, где сидеть, чтобы не быть устраненным. Напишите клиента очереди Josephus.java, который берет M и N из командной строки и распечатывает порядок, в котором исключаются люди (и, таким образом, показывает Джозефусу, где сидеть в кругу).
Мой код выглядит следующим образом:
package josephus;
import java.util.Queue;
public class Josephus {
public static void main(String[] args) {
int n = Integer.parseInt(args[0]),
m = Integer.parseInt(args[1]);
Queue<Integer> q = new Queue<Integer>();
for (int i = 0; i < n; i++)
q.enqueue(new Integer(i));
int k = 0;
while (!q.isEmpty())
{
int x = q.dequeue();
if (++k % m == 0)
StdOut.print(x + " ");
else
q.enqueue(x);
}
StdOut.println();
} }
Когда я запускаю его в NetBeans, он выдает мне ошибки, в которых говорится:
Очередь абстрактна; не может быть создан
поставить в очередь: не могу найти символ
dequeue: не удается найти символ
StdOut: не удается найти символ
Я думал, что при импорте java.util.Queue очередь сработает, а для StdOut я загрузил stdlib.jar для добавления в библиотеку проектов, включающую StdOut, и подумал, что это сработает.
Если есть проблема с моим кодом или чем-то еще, что я должен сделать, я был бы очень признателен за помощь. Кроме того, для справки и для того, чтобы увидеть, где я получил stdlib.jar, вот ссылка на сайт учебников, откуда взялась эта проблема: http://algs4.cs.princeton.edu/13stacks/ (проблема Джозефуса #37 в разделе "Творческие проблемы" ближе к концу.
1 ответ
Queue
является интерфейсом и не может быть непосредственно создан в Java. Вы должны предоставить конкретный класс реализации, такой как ArrayDeque
,
Queue<Integer> q = new ArrayDeque<Integer>();
Методы очереди enqueue
а также dequeue
называются по-разному - offer
а также poll
соответственно. Например:
q.offer(i);
а также
int x = q.poll();
StdOut
не является классом в Java; использование System.out
Например:
System.out.print(x + " ");