Josephus Problemi icin kod: public class Josephus {

public class Josephus {

public static class person {
person next;
private final int position;

private static int nextPosition = 0;

public person() {
position = nextPosition;
nextPosition++;

next = this;
}

public person insertNext(person p) {
p.next = next;
next = p;
return this;
}

public person removeNext() {
next = next.next;
return this;
}

public person next() {
return next;
}

public String toString() {
return Integer.toString(position);
}
}

public static void main(String[] args) {
int n = 8;
int m = 3;
int People = n;
int Step = m;
People = Integer.parseInt(args[0]);
Step = Integer.parseInt(args[1]);

person person = new person();
for (int i = 1; i < n; i++)
person = person.insertNext(new person()).next();
int tmp = 0;

while (person.next() != person) {

if (tmp == m - 1) {
System.out.print(person.next() + " ");
System.out.print(m);
person = person.removeNext();
tmp = 0;
} else {
person = person.next();
tmp++;
System.out.print(person + " ");
System.out.print(tmp);
}
}

System.out.println(person);
}

}

 

array icin verilen index'de deger yoktur.

calistirmadim ama,
Step = Integer.parseInt(args[1]);

adimindaki (args[1]) arguman girilmemis olabilir.

ekyil

bir array degerine gecersiz bir index ile erismeye calisiyorsun. benim ilk gözüme carpan yer:
People = Integer.parseInt(args[0]);
Step = Integer.parseInt(args[1]);

burada args arrayinin uzunlugunun 2 olduguna eminmisin. main methoda sadece 2 den az parametre gönderiyor olabilirsin. eger main methoduna en az iki parametre gönderilmesi zorunlu ise yukarida verdigim kisim öncesi if (args.length == 2) kontrolü yapmalisin.

emrahday

programa argüman verdin mi ? args[0] ve args[1] değerlerini koda arguman olarak vermen lazım.
stackoverflow.com

Anlamadığım n= 8 m=3 sonra neden arguman set ediyon ? Argumanlara ihtiyacın yoksa kaldır o satırları. Yok ihtiyacın varsa verdiğim linkte anlatıyor o şekilde ekle. Eclipse kullanmıyosan da kullandığın ide ye nasıl arguman ekleniyor google da bi aratıver.

nuevo
1

mobil görünümden çık