Index out of bounds (CSE permutazioni problema) java

0

Domanda

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

        
    }
}

Il mio problema è: Ingresso

L'unica linea di input contiene un numero intero n.

Uscita

Stampare una bella permutazione degli interi 1,2,...,n. Se ci sono diverse soluzioni, si può stampare qualsiasi di loro. Se non ci sono soluzioni, di stampa "NESSUNA SOLUZIONE".

Tuttavia, ho l'index out of bounds errore. Quale parte del mio codice è sbagliato e come posso risolvere l'errore? Errore avviene alla riga 19

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

Migliore risposta

-1

Il codice errato è qui

even.set(0, 4);

e il motivo è qui

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

Non è possibile utilizzare il set(int index, E element) metodo di un vuoto di ArrayList

2021-11-24 00:52:28

In altre lingue

Questa pagina è in altre lingue

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