Visualizzazione dei risultati da 1 a 8 su 8

Discussione: piccoli_dubbi_java

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    191

    piccoli_dubbi_java

    Ciao a tutti, avrei tre piccoli cosette da chiedere!
    Studiandomi le superclassi e le classi derivate mi è venuto un dubbio,
    in qualche caso non sarebbe la stessa cosa
    se scrivessi:
    public class esempio extends primoesempio
    oppure nella file della classe esempio:
    import esempi.primoesempio.*;

    poi ho trovato un esercizio:
    public boolean prova(int n)
    {
    int i;
    i=0;
    while(i < variabile)
    {
    if(numero[i]==n) return true;
    i++;
    }
    return false;
    }
    se numero[i] è uguale a n il metodo restituisce true,
    ma poi in ogni caso return false viene fa si che il metodo restituisca false o mi sbaglio? non è un contro senso,
    non ci vorrebbe un else?

    Un'ultima cosa:
    public void addMember(int n)
    {
    if(isMember(n)) return;
    if(cur_size == numbers.length) return;
    numbers[cur_size++] = n;
    }
    la singola istruzione return a cosa serve, cosa restituisce il metodo?
    void non è un particolare metodo che non restituisce niente?
    Ciao e grazie!!!

  2. #2
    public class esempio extends primoesempio
    oppure nella file della classe esempio:
    import esempi.primoesempio.*;
    Non l'ho capita

    public boolean prova(int n)
    {
    int i;
    i=0;
    while(i < variabile)
    {
    if(numero[i]==n) return true;
    i++;
    }
    return false;
    }
    se numero[i] è uguale a n il metodo restituisce true,
    ma poi in ogni caso return false viene fa si che il metodo restituisca false o mi sbaglio? non è un contro senso,
    non ci vorrebbe un else?
    no perchè la return true causa l'interruzione del metodo e il ritorno al programma chiamante . return false non verrà eseguito in questo caso

    public void addMember(int n)
    {
    if(isMember(n)) return;
    if(cur_size == numbers.length) return;
    numbers[cur_size++] = n;
    }
    la singola istruzione return a cosa serve, cosa restituisce il metodo?
    void non è un particolare metodo che non restituisce niente?
    la return singola viene usata nei metodi che resitutiscono void per terminare il metodo al verificarsi di una interruzione. Il metodo non restituisce nulla(void)
    Lang=Java
    Ambiente = Eclipse forever
    Ubuntu & Win XP Pro

  3. #3

    Re: piccoli_dubbi_java

    Originariamente inviato da goglol
    Ciao a tutti, avrei tre piccoli cosette da chiedere!
    Studiandomi le superclassi e le classi derivate mi è venuto un dubbio,
    in qualche caso non sarebbe la stessa cosa
    se scrivessi:
    public class esempio extends primoesempio
    oppure nella file della classe esempio:
    import esempi.primoesempio.*;
    Decisamente no. L'estensione di una classe è un'operazione che permette di utilizzare il polimorfismo e che non è paragonabile alla direttiva import. L'estensione fa in modo che la classe che stai scrivendo SIA una specificazione della superclasse, mentre con l'import ti assicuri di poter istanziare oggetti o utilizzare metodi statici di una particolare classe.

    (attenzione che le classi devono convenzionalmente iniziare con la lettera maiuscola)

    c
    poi ho trovato un esercizio:
    public boolean prova(int n)
    {
    int i;
    i=0;
    while(i < variabile)
    {
    if(numero[i]==n) return true;
    i++;
    }
    return false;
    }
    se numero[i] è uguale a n il metodo restituisce true,
    ma poi in ogni caso return false viene fa si che il metodo restituisca false o mi sbaglio? non è un contro senso,
    non ci vorrebbe un else?
    No, perchè se viene eseguita l'istruzione return non vengono eseguite le eventuali istruzioni successive. Quando ho studiato Fondamenti di informatica il mio professore ci costringeva ad usare in ogni metodo una sola istruzione di return, ma personalmente sono contrario a questa rigidezza. Ammetto però che troppe return possono creare confusione.

    Un'ultima cosa:
    public void addMember(int n)
    {
    if(isMember(n)) return;
    if(cur_size == numbers.length) return;
    numbers[cur_size++] = n;
    }
    la singola istruzione return a cosa serve, cosa restituisce il metodo?
    void non è un particolare metodo che non restituisce niente?
    Ciao e grazie!!!
    Come prima. L'istruzione return termina il metodo (che non restituisce niente, ma termina)...
    Sciao!
    SO: Debian Sarge kernel 2.6.11
    Lang: Java, C++, C

  4. #4
    acc, fregato!
    SO: Debian Sarge kernel 2.6.11
    Lang: Java, C++, C

  5. #5
    Utente di HTML.it L'avatar di Angelo1974
    Registrato dal
    Feb 2003
    Messaggi
    1,107
    Per la prima domanda la risposta è no..... dire public class esempio extends primoesempio significa dire che la classe esempio eredita ( e quindi può utilizzare tutti i metodi ( o quasi ) della classe primoesempio ed in più ha dei metodi suoi personali che primoesempio non può usare ( è un po' come dire albero ( che ha delle radici e dei rami ) e pino ( il pino è un albero -> eredita tutte le caratteristiche degli alberi ( radici e rami ) ma ha delle sue particolarità che non tutti gli alberi hanno ) ); dire
    import esempi.primoesempio.*;
    è come se dicessi che vuoi utilizzare tutte le classi contenuto nel package esempi sottopackage primoesempio ( dire import esempi.primoesempio.Pippo.class; significa che viuoi usare solo la classe Pippo del package esempi sottopackage primoesempio ).
    Per l'esercizio..... si hai ragione sarebbe più corretto:
    public boolean prova(int n)
    {
    int i;
    i=0;
    while(i < variabile){
    if(numero[i]==n) return true;
    else return false;
    i++;
    }
    }
    altrimenti avrai sempre false
    Il return serve a far terminare il metodo quando succede qualcosa in questo caso quando o if(isMember(n)) return; oppure quando
    if(cur_size == numbers.length) return; in uno di questi casi il metodo si uscirà dal addMember
    Spero d'qaverti chiarito le idee e non confuso ancora di più ciao

  6. #6
    :metallica :metallica

    Lang=Java
    Ambiente = Eclipse forever
    Ubuntu & Win XP Pro

  7. #7
    Utente di HTML.it L'avatar di Angelo1974
    Registrato dal
    Feb 2003
    Messaggi
    1,107
    public boolean prova(int n)
    {
    int i;
    i=0;
    while(i < variabile)
    {
    if(numero[i]==n) return true;
    i++;
    }
    return false;
    }
    Correggo quanto detto prima per questo esercizio......che imbecille sono stato..... con return true si esce dal metodo direttamente.....perdonatemi please

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    191
    Ragazzi siete stati chiarissimi(meglio del manuale) !!!!
    Ciao e 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 © 2024 vBulletin Solutions, Inc. All rights reserved.