[Help] Esercizio Java

di il
10 risposte

[Help] Esercizio Java

Ciao ragazzi premetto che sono ancora un programmatore in erba e sto studiando per conto mio java con il libro "manuale di java 7" di claudio de sio cesari .
mi consigliate di attingere da qualche altra fonte ? o va bene anche questo libro ?
Cmq oramai sono alla fine del capitolo 7, e ho iniziato il secondo es del capitolo che vi riporto:
"una rubrica contiene informazioni(nome,indirizzo,numero telefonico) su un certo numero di persone prestabilito (le informazioni sono preintrodotte comando e l'applicazione dovrà restituire le informazioni relative alla persona. Se il preintrodotta dall'applicazione, deve essere restituito un messagio sigificativo. non vi sono altri vincoli.
in base alla mia interpretazione ho creato 2 classi una chiamata Rubrica e l'altra TestRubrica :
vi allego la classe rubrica:
import javax.swing.JOptionPane;


public class Rubrica {
private String nome;
private String indirizzo;
private long numerotel;
public Rubrica (String n, String i,long t) {
n=nome;
i=indirizzo;
t=numerotel;
}
public String getNome () {
return nome;
}
public String getIndirizzo () {
return indirizzo;
}
public Long getNumerotel () {
return numerotel;
}
public void dammiDati() {
System.out.println(this.nome+" "+this.indirizzo+" "+this.numerotel);
}
public void Test () {
String insnome=JOptionPane.showInputDialog("Inserisci un nome di una persona appartenente Rubrica");
if ((insnome=="Carlo")||(insnome=="Autista")){
this.dammiDati();
}
else {
System.out.println("il nome inserito non appartine alla rubrica");
}
}

}

inoltre vi allego la classe TestRubrica :


public class TestRubrica {
public static void main(String[] args) {
Rubrica persona1=new Rubrica("Carlo","Via ancestrale",3456784);
Rubrica persona2=new Rubrica("Autista","Via Bho",44324524);
persona1.Test();
persona2.Test();

}
}

Mandandolo in esecuzione mi viene solo l'istruzione else dell'if.
Ragazzi vi prego datemi una mano non so dov'è l'errore e come risolverlo !!!!

10 Risposte

  • Re: [Help] Esercizio Java

    Ciao! qui è l'errore:
    if ((insnome=="Carlo") || (insnome=="Autista"))
    Tu usi l'operatore ==

    Questo operatore, usato per i numeri va bene, controlla l'uguaglianza, invece, se usato per le variabili a oggetto come in questo caso (dato che le stringhe sono oggetti) questo operatore controlla se le due variabili puntano allo stesso oggetto (cioè controlla se c'è aliasing).
    Per controllare l'uguaglianza di due oggetti si usa il metodo equals. come segue:
    if ( insnome.equals("Carlo")||insnome.equals("Autista")  )
    Cmq se posso permettermi nel codice c'è qualche altra stranezza.. diciamo

    Per quanto riguarda il libro che stai seguendo, io non lo conosco, non saprei dirti,
    posso dirti che io ho imparato dal libro "big java" di Cay Horstmann, un ottimo libro.
    Ma se tu sei già arrivato al capitolo 7 di quel libro, forse non vale la pena cambiare
    Se hai altri dubbi o problemi, non esitare a chiedere! ciao!
  • Re: [Help] Esercizio Java

    Grazie mille ora provo ad aggiornare il codice e ti faccio sapere
  • Re: [Help] Esercizio Java

    Ho provato ad apportare le modifiche e nel codice e mi da come output nella console questo : null null 0 invece del nome, dell'indirizzo e del numero di telefono ...probabilmente qualcosa non va nel metodo dammiDati ?
    Ah cmq a quali stranezze ti riferivi giusto per sapere nel messaggio prima ?
  • Re: [Help] Esercizio Java

    Aspetta che provo ad implementarlo io e ti dico
  • Re: [Help] Esercizio Java

    Hai fatto un errore di distrazione nel costruttore

    n=nome;
    i=indirizzo;
    t=numerotel;

    Codice corretto:
    nome=n;
    indirizzo=i;
    numerotel=t;
  • Re: [Help] Esercizio Java

    Per stranezze intendo:

    il tipo di dati restituito dal metodo getNumeroTel.
    restituisci un dato di tipo Long che è un oggetto, quando non c'è bisogno basta un long
    (Long è un oggetto, long è un tipo di dato primitivo, quindi hai maggiore efficienza così).

    Il nome del metodo Test inizia per una lettera maiuscola.
    In java per convenzione si usano per i metodi nomi che iniziano per lettera minuscola,
    cmq forse non dovevo dire stranezze sono scelte sei libero di fare anche come hai scritto tu, dopotutto il programma è corretto (con la modifica che ho suggerito nell'ultimo messaggio)
  • Re: [Help] Esercizio Java

    Funziona grazie mille !!!! cmq come mai non andava bene l'errore di prima ? non è la stessa cosa fare : nome=n e n=nome ?
  • Re: [Help] Esercizio Java

    Figurati, è un piacere

    Sono due cose diverse.
    L'operatore = non significa "uguale", significa "assegnazione".

    n=nome; // significa: assegna il valore di nome, alla variabile n.

    nome=n; // significa: assegna il valore di n, alla variabile nome.


    Subito prima che venisse eseguita la prima istruzione del costruttore:
    n puntava a "Carlo"
    nome puntava a null.
    Quindi facendo n=nome; ottieni: n punta a null e nome punta a null
    Invece facendo nome=n; ottieni: n punta a "Carlo" e nome punta a "Carlo"

    Chiaro?
  • Re: [Help] Esercizio Java

    Grazie, lo spieghi molto più chiaramente del libro (che lo dava per sottointeso!)
  • Re: [Help] Esercizio Java

    Di niente, siamo qui per aiutarci a vicenda
    Cmq se il libro dalla quale stai studiando ha problemi di chiarezza,
    considera la possibilità di studiare da un altro (io ho studiato da "Big Java" di Cay Horstamann).
Devi accedere o registrarti per scrivere nel forum
10 risposte