Salve,
ho da poco ripreso a programmare e vorrei avere dei consigli su come migliorare e rendere più efficiente il metodo che ho scritto. Sto facendo alcuni esercizi e uno consisteva nella stesura di un programma per la creazione di un calendario di calcio. Ho usato l'algoritmo di berger. Funziona, ma come detto vorrei avere dei pareri su come migliorarlo da voi che siete più esperti di me. grazie in anticipo.
Il metodo è all'interno della classe. Per il riuso dovrei migliorare un pochino tutto. squadre[] è un array di squadre e con .getNome restituisce il nome della squadra.

Inoltre se avete dei consigli su come strutturare un mio piano di studio per diventare programmatore. Ho dovuto lasciare l'università e vorrei fare tutto da solo.

public void calendario() {
int numeroSquadre = squadre.length;
int numeroGiornate = numeroSquadre - 1;
int numeroIncontri = numeroSquadre / 2;
String[] casa = new String[numeroIncontri];
String[] trasferta = new String[numeroIncontri];
for (int i = 0; i < numeroSquadre/2; i++) {
casa[i] = squadre[i].getNome();
trasferta[i] = squadre[numeroSquadre - i-1].getNome();
}

for (int i = 0; i < numeroGiornate; i++) {
System.out.println("Giornata " + (i+1) + ":");
if (i % 2 != 0) {
for (int j = 0; j < casa.length; j++) {
System.out.println( casa[j] + " - " + trasferta[j]);
}
} else {
for (int j = 0; j < casa.length; j++) {
System.out.println( casa[j] + " - " + trasferta[j]);
}
}

String[] appCasa = new String[casa.length];
String[] appTras = new String[casa.length];
for(int n=0 ; n<casa.length ; n++){
appCasa[n] = casa[n];
appTras[n] = trasferta[n];
}
appCasa[0] = trasferta[0];
trasferta[casa.length-1] = casa[casa.length-1];
for(int k = 1 ; k < casa.length ; k++){
casa[k] = appCasa[k-1];
trasferta[casa.length-k-1] = appTras[casa.length-k];
}
}
}