Ciao a tutti,
sto iniziando a studiare Java e mi trovo questo problema: nella classe principale "
Rubrica", più precisamente nel main, dichiaro un arraylist di oggetti "
Persona" di nome "
rub", sul quale voglio fare le solite operazioni (inserimento, cancellazione, ecc.).
Le operazioni le voglio fare in metodi diversi dal main, perciò dichiaro questi metodi (nella stessa classe) utilizzando la keyword static (perché vengono richiamati dal main che è un metodo static...giusto??). E qui nasce il problema: essendo l'arraylist dichiarato nel main non è visibile negli altri metodi! Come risolverlo? Ho provato a dichiararlo fuori dal main (come l'oggetto Scanner) ma non funziona lo stesso...ho pensato che forse sarebbe meglio dichiarare l'arraylist in un'altra classe, o forse non cambierebbe nulla? Infine mi è venuto in mente di passare l'arraylist come parametro ai metodi statici...non so, sono un po' confuso, cosa mi consigliate di fare?
Posto qui sotto il codice, grazie dell'aiuto.
Classe Rubrica:
package rubrica;
import java.util.ArrayList;
import java.util.Scanner;
public class Rubrica {
static Scanner tastiera = new Scanner(System.in);
// MAIN
public static void main(String[] args) {
// DICHIARO UN ARRAY DINAMICO
ArrayList<Persona> rub = new ArrayList<>();
// VISUALIZZO MENU E FACCIO SCEGLIERE UN'OPERAZIONE
int scelta = visualizzaMenu();
// ESEGUO L'OPERAZIONE RICHIESTA
switch(scelta) {
case 1: inserimento();
break;
case 2: ricerca();
break;
case 3: cancella();
break;
case 4: modifica();
break;
case 5: System.out.println("*** Fine programma ***");
}
} // FINE MAIN
// ************************************************************ //
// ALTRI METODI
static int visualizzaMenu() {
int s = 0;
do{
System.out.println("MENU':\n");
System.out.println("--------------------------");
System.out.println("1: inserimento*\n" +
"2: ricerca*\n" +
"3: cancella*\n" +
"4: modifica*\n" +
"5: esci dal programma");
System.out.println("--------------------------");
System.out.print("Scegli operazione: ");
s = tastiera.nextInt();
} while(s > 5);
return s;
}
static void inserimento(){
Persona p = new Persona();
System.out.println("Inserisci nuovo utente.");
System.out.println("Nome: ");
p.setNome(tastiera.nextLine());
System.out.println("Cognome: ");
p.setCognome(tastiera.nextLine());
System.out.println("Cellulare: ");
p.setCellulare(tastiera.nextLine());
rub.add(p);
}
///////////////////////////////// DA FARE /////////////////////////////////
static void cancella(){}
static void modifica(){}
static void ricerca(){}
///////////////////////////////////////////////////////////////////////////
} // FINE CLASSE
Classe Persona:
package rubrica;
public class Persona {
// ATTRIBUTI
private String nome;
private String cognome;
private String cellulare;
// COSTRUTTORI
public Persona(String nom, String cog, String cel) {
nome = nom;
cognome = cog;
cellulare = cel;
}
public Persona() {}
// GETTER e SETTER
public String getNome() { return nome; }
public void setNome(String nom) { nome = nome; }
public String getCognome() { return cognome; }
public void setCognome(String cog) { cognome = cognome; }
public String getCellulare() { return cellulare; }
public void setCellulare(String cel) { cellulare = cel; }
// METODI
void mostra() { System.out.println(nome + " " + cognome + " " + cellulare); }
}