PDA

Visualizza la versione completa : [java] Consigli su esercizio - simulazione rubrica


freetom
31-12-2004, 13:04
Sto studiando JAVA e mi servirebbe un aiutino per capire dove sto sbagliando.. nella risoluzione di un esercizio propostomi... da una guida sull'argomento che non riporta la soluzione

Esercizio che m'impalla... :fagiano:

Realizzare un’applicazione che simuli il funzionamento di una rubrica Il lettore si limiti a simulare la seguente situazione:
una rubrica contiene informazioni (nome, indirizzo, numero telefonico) su di un certo numero di persone (per esempio 5) prestabilito (le informazioni sono pre-introdotte nel metodo main). L’utente, dovrà fornire all’applicazione un nome da riga di comando, e l’applicazione dovrà restituire le informazioni relative al nome della persona. Se il nome non è fornito, o se il nome immesso non corrisponde al nome di una persona pre-introdotta dall’applicazione, deve essere restituito un messaggio significativo.

Ecco il codice finora da me partorito.. :stordita:

class UtentiRubrica {

private String nome, indirizzo, telefono;

}

class Rubrica
{
public static void main(String args[])
{

UtentiRubrica primo = new UtentiRubrica("Tommaso", "via rubens", "868697");
UtentiRubrica secondo = new UtentiRubrica("Paolo", "via plucci", "432397");
UtentiRubrica terzo = new UtentiRubrica("Marco", "via ghisu", "868976");
UtentiRubrica quarto = new UtentiRubrica("Pippo", "via floret", "68696");
UtentiRubrica quinto = new UtentiRubrica("Giorgio", "via pippolis", "647649");

if (utente == primo || utente == secondo || utente == terzo || utente == quarto || utente == quinto)
//Stampa dei dati richiesti
System.out.println("L'utente scelto ha i seguenti dati relativi:" +
utente.indirizzo +"---"+ utente.telefono);
else
System.out.println("L'utente scelto nn è al momento presente in rubrica:"
}
}

Il programma una volta compilato andrà chiamato cosi':

java Rubrica nomediprova (es. Pippo)

Sembrerebbe tutto ok tranne il fatto che non so come legare utente al resto...
e non so alla fine dove mettere la classe UtentiRubrica rispetto al main...

Qualche prof o sexy profssa :fighet: mi aiuta?

Thanks :unz:
Lo studente

Angelo1974
31-12-2004, 21:48
Ciao; questo è un semplice esempio.... non l'ho provato ma dovrebbe funzicare.
Ciao


public class Utente {

private String nome;
private String cognome;
private String via;
private String telefono;
public Utente( String _nome, String _cognome, String _telefono, String _via ) {

setNome( _nome );
setCognome( _cognome );
setTelefono( _telefono );
setVia( _via );
}

public void setNome( String value ){

nome = value;
}

public String getNome(){

return nome;
}

public void setCognome( String value ){

cognome = value;
}

public String getCognome(){

return cognome;
}

public void setVia( String value ){

via = value;
}

public String getVia(){

return via;
}

public void setTelefono( String value ){

telefono = value;
}

public String getTelefono(){

return telefono;
}

public String toString( ){

return "Nome utente: "+ getNome()+" cognome: "+ getCognome()+" telefono: "+getTelefono()+" indirizzo: "+getVia();
}

}


import java.util.Hashtable;

public class Main {

public static void main(String[] args) {

if( args.length < 1 ){

System.out.println( "Inserire il nome....." );
System.exit(0);
}
Hashtable h = new Hashtable();
h.put( "Pippo", new Utente( "Pippo", "Pelo", "0245", "via alcide" ) );
h.put( "Pluto", new Utente( "Pluto", "Cane", "0245", "via topi" ) );
h.put( "Topolino", new Utente( "Topolino", "Top", "0245", "topolinia" ) );
if( h.containsKey( args[0] ) ){
Utente u = ( (Utente)( h.get( args[0] ) ) );
System.out.println( u );
}else{

System.out.println( "Passato un nome non in rubrica" );
}
}
}

Andrea1979
02-01-2005, 12:30
ciao freetom, ti do qualche delucidazione.

Nel mitico


public static void main (String args[])


String args[] è l'array di stringhe dei parametri che passi alla tua applicazione

Quindi manda in esecuzione con:

java Rubrica Pippo

equivale a dire che


args[0] = "Pippo";

Poi c'è un problema concettuale da risolvere: in Java non si confrontano gli oggetti con "==", quello va bene per i tipi primitivi (tipo int o double, tanto per intenderci).
Gli oggetti vanno confrontati con equals, e visto che le stringhe sono oggetti, il tuo confronto sarà qualcosa del tipo



boolean uguali = stringa1.equals(stringa2);

Ultima cosa, bisognerebbe vedere come è fatta la classe UtentiRubrica, ossia che metodi ha: mi aspetterei qualcosa come il codice di Angelo1974 della classe Utente. UtentiRubrica avrà dei metodi per restituire il nome del contatto, l'indirizzo, il numero di telefono, etc.
Facciamo finta che esista il metodo
String getName() nella classe UtentiRubrica

allora per confrontare l'utente immesso da linea di comando con l'eventuale utente nella rubrica dovresti fare un controllo tipo



if (utente.equals(primo.getName()) || ... || utente.equals(quinto.getName())) {
System.out.println("Utente trovato: ...");
} else {
System.out.println("Utente non trovato");
}

dove utente altro non è che args[0]
Spero di averti chiarito un po' le idee.
Ciao

Loading