Ciao a tutti,
sto realizzando una classe archivio che descrive una collezione di dizionari con vari metodi per l'inserimento, la rimozione e la ricerca nel dizionario.
Tuttavia il metodo per l'inserimento mi restituisce "null" come risultato e non capisco perché, errori non ce ne sono...
Qualcuno mi può correggere il codice e spiegarmi perché nn va bene?
Grazie mille
classe Archivio
codice:
import java.util.Vector;
public class Archivio {
private static Vector <Dizionario> archivioDizionari = new Vector<Dizionario>();
/**
* Costruttore
*/
public Archivio(){
this.archivioDizionari=archivioDizionari;
}
public static void main(String[] args) {
char scelta;
// ciclo principale
do{
scelta=menuPrincipale();
switch(scelta){
case 'V':
case'v': visualizzaDizionario ();break;
case 'S':
case's': selezioneDizionario();break;
case 'I':
case'i': inserimentoDizionario (nuovoDizionario);break;
case 'C':
case'c': rimozioneDizionario ();break;
}
}while(scelta!='e' && scelta!='E');
System.out.println("\nBye!");
}
// metodo che carica il menu principale
public static char menuPrincipale(){
String ok="VvIiCcRrSsUueE";
char scelta;
do{
System.out.println("|| MENU' PRINCIPALE ||");
System.out.println("");
System.out.println("[V/v] Visualizza i dizionari");
System.out.println("[S/s] Seleziona un dizionario");
System.out.println("[I/i] Inserisci un nuovo dizionario");
System.out.println("[C/c] Rimuovi un dizionario");
System.out.println("[R/r] Esegui una ricerca");
System.out.println("[S/s] Salva la collezione di dizionari ");
System.out.println("[U/u] Fai l'upload di una nuova collezione");
System.out.println("[e/E] Arrivederci!");
System.out.println("");
scelta=Input.readChar("fai la tua scelta:");
}while(ok.indexOf(scelta)<0);
return scelta;
}
// metodo per la selezione del dizionario
public static void selezioneDizionario(){
if(archivioDizionari.isEmpty()==true){
System.out.println("non ci sono dizionari, inserisci un nuovo dizionario");
menuPrincipale();
}
else{
String nome=Input.readString("Inserisci il nome del dizionario da cercare:");
ricercaNome(archivioDizionari,nome);
menuDizionario();
}
}
//metodo per la visualizzazione dei dizionari
public static void visualizzaDizionario(){
if(archivioDizionari.isEmpty()==true){
System.out.println("non ci sono dizionari, inserisci un nuovo dizionario");
menuPrincipale();
}
else{
for(int pos=0; pos<=archivioDizionari.size();pos++)
System.out.print(archivioDizionari.indexOf(pos)+" "+archivioDizionari.get(pos).getNomeDizionario());
menuPrincipale();
} }
// metodo per ricerca per nome
public static boolean ricercaNome(Vector <Dizionario> archivioDizionari, String nome){
boolean nonTrovato=true;
for(int i=0; i<archivioDizionari.size() && nonTrovato; i++){
Dizionario d=archivioDizionari.elementAt(i);
if(d.getNomeDizionario().equals(nome.trim())){
nome=d.getNomeDizionario();
}
}
if(nonTrovato){
System.out.println("Parola non trovata!");
}
return nonTrovato;
}
// metodo per l'inserimento di un dizionario
public static boolean inserimento(int pos, Dizionario nuovoDizionario){
if(pos<0 || pos> archivioDizionari.size() ||archivioDizionari==null) {
return false;
}
else {
archivioDizionari.add(pos, nuovoDizionario);
return true;
}
}
// metodo statico per l'inserimento di un dizionario
public static void inserimentoDizionario(Vector <archivioDizionari> nuovoDizionario){ // metodo statico per l'inserimento
int pos=Input.readInt("Dammi una posizione valida: ");
while (pos<0 || pos> archivioDizionari.size() ||archivioDizionari==null) {
nuovoDizionario=Dizionario.leggiDizionario();
inserimento(pos, nuovoDizionario);
System.out.println(nuovoDizionario.getNomeDizionario());
menuPrincipale();
}
}
// metodo per la selezione del dizionario
// metodo per la rimozione di un dizionario
public static void rimozioneDizionario(){
if(archivioDizionari.isEmpty()==true){
System.out.println("non ci sono dizionari, inserisci un nuovo dizionario");
menuPrincipale();
}
else {
String nome=Input.readString("Inserisci il nome del dizionario da cercare:");
ricercaNome(archivioDizionari,nome);
System.out.println();
char opz=Input.readChar("Sei sicuro di voler rimuovere il dizionario"+nome+"? s/n");
if(opz=='s'){
archivioDizionari.remove(nome);
System.out.println("Hai rimosso il dizionario");
menuPrincipale();
}
else{System.out.println("Non hai rimosso il dizionario, torna al menù principale");
menuPrincipale();}
}
}
// metodo menu dizionario
public static char menuDizionario(){
String ok="AaCcRrVveE";
char sceltaDizionario;
do{
System.out.println("|| MENU' DEL DIZIONARIO ||");
System.out.println("");
System.out.println("[A/a] Aggiungi un nuovo lemma");
System.out.println("[C/c] Rimuovi un lemma");
System.out.println("[R/r] Esegui una ricerca");
System.out.println("[V/v] Visualizza la lista dei lemmi");
System.out.println("[e/E] Arrivederci!");
sceltaDizionario=Input.readChar("fai la tua scelta:");
}while(ok.indexOf(sceltaDizionario)<0);
return sceltaDizionario;
}
// metodo inserimento lemmi
// metodo visualizza lemmi
// metodo rimozione lemmi
// metodo menu ricerca lemmi
public static void cicloRicerca(){
String nome=Input.readString("Inserisci il nome del dizionario desiderato:");
char scelta;
// ciclo principale
if(ricercaNome(archivioDizionari, nome)){
do{
scelta=menuLemmaRicerca();
switch(scelta){
case 'L':
case'l': ;break;
case 'N':
case'n':;break;
case 'D':
case'd':;break;
case 'S':
case's':;break;
case 'C':
case'c':;break;
case 'E':
case'e':;break;
}
}while(scelta!='e' && scelta!='E');
System.out.println("\nBye!");
}
}
public static char menuLemmaRicerca(){
String ok="LlTtDdSsCceE";
char cerca;
do{
System.out.println("|| OPZIONI DI RICERCA ||");
System.out.println("");
System.out.println("[L/l] Cerca per lingua");
System.out.println("[N/n] Cerca per nome");
System.out.println("[D/d] Cerca per descrizione");
System.out.println("[S/s] Cerca per sinonimo");
System.out.println("[C/c] Cerca per contrario");
System.out.println("[e/E] Arrivederci!");
cerca=Input.readChar("fai la tua scelta:");
}while(ok.indexOf(cerca)<0);
return cerca;
}
// ricerca nome lemma
public static void ricercaLemmaDizionario(Dizionario nuovoDizionario,String parola){
}
// ricerca descrizione lemma
// ricerca sinonimi lemma
// ricerca contrari lemma
// ricerca lingua lemma
public Vector<Dizionario> ricercaLingua(String lingua){ // da utilizzare per ricerche multiple(Ë il risulatato della ricerca come vettore che puÚ essere utilizzato per filtrare ulterioremnete i risultati)
return ricercaLingua(archivioDizionari,lingua);
}
public static Vector ricercaLingua(Vector <Dizionario> archivioDizionari, String lingua){
Vector<Dizionario> vettoreLingua = new Vector<Dizionario>();
boolean nonTrovato=true;
for(int i=0; i<archivioDizionari.size() && nonTrovato; i++){
Dizionario d=archivioDizionari.elementAt(i);
if(d.getNomeDizionario().equals(lingua.trim())){
lingua=d.getLinguaDizionario();
// stampa la lista dei dizionari con quella lingua
}
}
if(nonTrovato){
System.out.println("Non ci sono dizionari in lingua"+" "+lingua+"torna al menu principale ");menuPrincipale();
}
return vettoreLingua;
}
// menu filtra ricerche
// metodo per il salvataggio
// metodo per l'upload
//
}