Salve sono nuovo in questo sito quindi non so bene come funzioni, è il mio primo argomento questo...
Sto seguendo un corso online di Java e nella penultima sezione ci sono vari esercizi spiegati dall'insegnante.
Io prima di vedere il video spiegazione però ci provavo da solo a svolgerlo e poi dopo averlo svolto guardavo la sua soluzione per vedere come lo aveva fatto lui.
Mi sono imbattuto in questo esercizio dove bisogna creare un metodo che da un array di interi ne crei uno nuovo dove i numeri pari sono tutti a sinistra e i dispari a destra non cambiando l'ordine.
Esempio
Array: {2,5,7,6,4,8}
Nuovo array: {2,6,4,8,5,7}
Questo è il mio programma:
**************************************************************************************
main:
package CorsoJava.Esercizio_6;
/*Implementare un metodo public static int[] split(int[] unArray){...} che restituisce
* un array ottenuto spostando a sinistra tutti i numeri pari presenti in unArray e
* spostando a destra tutti quelli dispari, mantenendo l'ordine relativo degli elementi.
* */
public class Es06 {
public static void main(String[] args) {
//Istanza della classe
Split split = new Split();
//dichiarazione variabili
int[] array = {2,5,456,673,713,23,3};
int length = array.length;
//Stampa dell'array
System.out.print("\nArray: {");
for(int k=0;k<length;k++) {
System.out.print(array[k]+",");
}
System.out.println("}\n\n");
//Uso del metodo split della classe
split.split(array);
}
}
****************************************************************************************
Classe:
package CorsoJava.Esercizio_6;
public class Split {
public void split(int[] unArray) {
//Dichiarazioni variabili
int counterPari=0;
int[] pari= new int[counterPari+2];
int counterDispari=0;
int[] dispari= new int[counterDispari+2];
int length1 = unArray.length;
int[] finale = new int[length1];
//ciclo for per smistare numerio pari nell'array pari e numeri dispari nell'array dispari
for(int i=0;i<length1;i++) {
if(unArray[i]%2==0) {
pari[counterPari]=unArray[i];
counterPari++;
}else {
dispari[counterPari]=unArray[i];
counterDispari++;
}
}
//ciclo for di controllo che stampa i due array
for(int el : pari) {
System.out.print(el+",");
}
System.out.println("");
for(int er : dispari) {
System.out.print(er+",");
}
//ciclo for per unione dei due array
for(int j=0;j<length1;j++) {
if(j<counterPari) {
finale[j]=pari[j];
}else {
finale[j]=dispari[j];
}
}
//Stampa finale
System.out.print("\nNuovo array: {");
for(int k=0;k<length1;k++) {
System.out.print(finale[k]+",");
}
System.out.print("}");
}
}
Io rivedendolo e provando a modificare il programma non sono riuscito a capire il problema
L'errore si riscontra nel ciclo for per smistare i numeri nei vari array pari e dispari.
Si riscontra nel ciclo for per l'unione degli array se per esempio l'array comincia per numero dispari.
Una mia supposizione era che il problema fosse causato dall'incremento dei counter ma non ne capisco il motivo visto che ho utilizzato in altri esercizi lo stesso metodo di soluzione.