Index out of bounds (CSES permutări problema) java

0

Problema

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("]",""));

        
    }
}

Problema mea este: Intrare

Singura linie de intrare conține un număr întreg n.

Ieșire

Print-o frumoasă permutare a numerelor întregi 1,2,...,n. Dacă există mai multe soluții, se poate imprima orice de pe ei. Dacă nu există soluții de imprimare "FĂRĂ SOLUȚIE".

Cu toate acestea, am obține indicele de limitele de eroare. Care parte din codul meu este gresit si cum pot rezolva eroarea? Eroare are loc la linia 19

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

Cel mai bun răspuns

-1

Cod greșit este aici

even.set(0, 4);

iar motivul este aici

    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));
    }

Nu puteți utiliza set(int index, E element) metoda la un gol ArrayList

2021-11-24 00:52:28

În alte limbi

Această pagină este în alte limbi

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