Изглежда не мога да разбера защо продължавам да получавам тази грешка! За първи път се занимавам с опашки. Сигурен съм, че решението е просто и вероятно пропускам нещо основно. Всякакви насоки/помощ се оценяват високо:
import java.util.LinkedList;
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 LinkedList<Integer>();
for (int i = 0; i < n; i++)
q.remove(new Integer(i));
int k = 0;
while (!q.isEmpty())
{
int x = q.remove();
if (++k % m == 0)
System.out.print(x + " ");
else
q.remove(x);
System.out.println(x + " ");
}
}
}
Оригиналната подкана за този код е както следва: Проблем на Йосиф Флавий. В проблема на Йосиф Флавий от древността N души са в тежко положение и се съгласяват на следната стратегия за намаляване на населението. Те се подреждат в кръг (на позиции, номерирани от 0 до N–1) и продължават около кръга, като елиминират всеки M-ти човек, докато остане само един човек. Легендата разказва, че Йосиф измислил къде да седне, за да избегне елиминирането. Напишете клиент на Queue Josephus, който взема N и M от командния ред и отпечатва реда, в който хората са елиминирани (и по този начин ще покаже на Josephus къде да седне в кръга).
for (int i = 0; i < n; i++) q.remove(new Integer(i));
... премахвате нещо от нова опашка? Как трябва да работи това? Вместо това трябва да опитатеq.add(...)
. И какво трябва да прави редътq.remove(x);
? Методътremove
не приема никакви аргументи. - person Tom   schedule 05.09.2014