Visualizzazione dei risultati da 1 a 3 su 3

Hybrid View

  1. #1

    Programma rubrica. Problema

    Ciao ragazzi,

    allora ho realizzato un piccolo programma in java che si occupa di gestire una rubrica telefonica.
    Tramite un menu, l'utente decide cosa selezionare. Solo che ho un po' di problemi.

    Vi inserisco le 2 classi che ho realizzato:

    codice:
    import java.util.Scanner;
    public class Rubrica 
    {
    
    
        public static void main(String[] args)throws java.lang.Exception
        {
            Scanner leggi = new Scanner(System.in);
            int menu = 0;
    
    
            do{
    
    
    
            System.out.println("Benvenuto nel menu");
            System.out.println("1) Inserisci contatto");
            System.out.println("2) Dimensione iniziale");
            System.out.println("3) Dimensione dopo inserimenti");
            System.out.println("4) Cerca contatto");
            System.out.println("5) toString");
            System.out.println("6) Esci");
    
            menu = leggi.nextInt();
    
    
    
            Schede k = new Schede(); //oggetto per comunicare con la classe oggetto
    
    
            switch(menu)
    
            {
    
            case 1:
    
                String contatto = null;
                int numero;
                System.out.print("Inserisci contatto: ");
                contatto = leggi.next();
                System.out.print("Inserisci numero: ");
                numero = leggi.nextInt();
    
                k.inserisci(contatto, numero); //passo come parametro ad inserisci
    
                break;
    
            case 2:
                System.out.println("Dimensione iniziale: " + k.getDimensione ()); 
                break;
    
            case 3:
                k.getDimensione();
                break;
    
            case 4:
                String inserito = null;
                System.out.println("Inserisci il contatto da cercare");
                inserito = leggi.next();
                System.out.print("Cercando " + inserito + " ottengo: "); 
                int n = k.trovaNumero (inserito); 
                if(n == -1)
                { 
                System.out.println ("Nessuna corrispondenza trovata"); 
                }
                else
                { 
                System.out.println (n); 
                } 
                break;
    
            case 5:
                System.out.println ("Ora invoco il toString:\n\n\n" + k.toString ()); 
                break;
    
            case 6:
                break;
    
            }
            }while(menu !=6);
    
        }
    
    
    }
    Nella prima classe ho creato il menu con i vari casi, e un oggetto che mi permette di comunicare con quest'altra classe (contenente i metodi):

    codice:
    public class Schede
    {
    
    
        private final int dim=100; 
        private String [] nomeRubrica; 
        private int [] numeroRubrica; 
        private int posizione; 
        
        public Schede()
        { 
        nomeRubrica=new String [dim]; 
        numeroRubrica=new int [dim]; 
        posizione=0; 
        } 
        
        public int trovaNumero (String nominativo)
        { 
        int i=0; 
        while(i<posizione){ 
        if(nominativo.equals (nomeRubrica[i]) )
        { 
        return numeroRubrica [i]; 
        } 
        } 
        return -1; 
        } 
    
    
        public boolean inserisci (String nominativo , int numero)
        { 
        if(posizione < 100)
        { 
        nomeRubrica [posizione] = nominativo; 
        numeroRubrica [posizione] = numero; 
        posizione++; 
        return true; 
        }
        else
        { 
        return false;  
        }   
        } 
    
    
        public int getDimensione (){ 
        System.out.println(posizione);
        return posizione; 
        } 
    
    
        public String toString (){ 
        StringBuilder sb=new StringBuilder (); 
        sb.append("La rubrica contiene "+ posizione + " numerin"); 
        for(int i=0;i<posizione;i++){ 
        sb.append(nomeRubrica [i]+" "+numeroRubrica [i]+"\n"); 
        } 
        return sb.toString (); 
        }


    Le cose che non vanno sono le seguenti:

    Inserisci contatto, dimensione dopo inserimenti, cerca contatto, e toString. Probabilmente il to String e il cerca contatto non vanno perché inserisci contatto è buggato. Non so perché non funziona, ma se passo tutto direttamente come parametro, aggiungendo il contatto via codice e con una classe, il programma funziona.
    Chi può illuminarmi?
    ?

  2. #2
    Ha fatto un errore a dichiarare e soprattuto inizializzare la classe Schede all'interno del while, in questo modo ad ogni ciclo crei un nuovo oggetto che ovviamente non avrà memoria del precedente.

    Porta la dichiarazione della classe sopra il do e vedrai che funziona tutto....

  3. #3
    Ok ho risolto, si può chiudere. Grazie
    ?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.