Проблемы с импортом / библиотекой?

Я работаю над заданием для класса:

Иосиф Флавий В проблеме Иосифа из древности, 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 + " ");
Другие вопросы по тегам