Sınırların dışında dizin (CSES permütasyon sorunu) java

0

Soru

import java.util.*;
import java.io.*;
public class cses6 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int n = input.nextInt();
        String m = "";

        ArrayList<Integer> even = new ArrayList<Integer>();
        ArrayList<Integer> odd = new ArrayList<Integer>();
        ArrayList<String> stringjoin = new ArrayList<String>();
        if (n == 1) {
            System.out.println(n);
        }
        if (1 < n && n< 4) {
            System.out.println("NO SOLUTION");
        }

        even.set(0, 4);
        even.set(1, 2);
        odd.add(0, 1);
        
        for (int i = 1; i < n+1 && i > 4; i++) {
            if (i % 2 == 0) {
                even.add(i);
            } else {
                odd.add(i);
            }


        }
        odd.addAll(even);

        for (int i = 1; i < odd.size(); i++) {
            m = Integer.toString(odd.get(i));
            stringjoin.set(i,m);
        }

        System.out.println(stringjoin.toString().replace(", ", " ").replace("[", "").replace("]",""));

        
    }
}

Benim sorunum şu: Giriş

Tek giriş satırı bir tamsayı n içerir.

Çıktı

1,2,..., n tamsayılarının güzel bir permütasyonunu yazdırın. Birkaç çözüm varsa, bunlardan herhangi birini yazdırabilirsiniz. Çözüm yoksa, "ÇÖZÜM YOK" yazın.

Ancak, dizin sınır dışı hatası alıyorum. Kodumun hangi kısmı yanlış ve hatayı nasıl çözebilirim? Hata 19 satırında gerçekleşir

java permutation
2021-11-24 00:40:31
1

En iyi cevabı

-1

Yanlış kod burada

even.set(0, 4);

ve nedeni burada

    public E set(int index, E element) {
        rangeCheck(index);

        E oldValue = elementData(index);
        elementData[index] = element;
        return oldValue;
    }

    private void rangeCheck(int index) {
        if (index >= size)
            throw new IndexOutOfBoundsException(outOfBoundsMsg(index));
    }

Kullanamazsınız set(int index, E element) boş bir ArrayList yöntemi

2021-11-24 00:52:28

Diğer dillerde

Bu sayfa diğer dillerde

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................