Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    Aiutoooo Urgentissimo Grazie!

    Ciao a tutti, volevo chiedervi come facevo a far si ke un costruttore può essere invocato solo un tot di volte.
    Mi spiego meglio....ho un costruttore Persona della classe Persona che "costruisce" un oggetto contenente il nome,l'età e la città di quella determinata persona.In un altra classe di Test voglio che il massimo numero di volte che posso creare 1nuovo oggetto di tipo Persona(Persona a=new Persona(int a,String b, String c)) sia 3, cioè posso solo creare 3persone,se ne voglio creare 4 m deve dare 1errore...cm posso fare???grazie mille accetto consigli ed esempi grazie grazie grazi

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Un po' bizzara come esigenza, perche' proprio 3?
    Con una variabile statica si puo' fare, ma non e' bellissimo.
    La incrementi ad ogni oggetto creato e se e' >=3 lanci un eccezzione.

  3. #3
    Eh si ho questa esigenza....cm faccio ad incrementarla ad ogni oggetto creato??grazie...se li ha può postare degli esempi!

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da limeste
    Eh si ho questa esigenza....cm faccio ad incrementarla ad ogni oggetto creato??grazie...se li ha può postare degli esempi!
    codice:
    class MiaClasse
    {
        private static int count;
    
        public MiaClasse ()
        {
            if (count++ == 3)
                throw new UnaEccezioneCheVuoi ();
        }
    }
    E se la eccezione è di tipo "checked" devi anche dichiararla con il throws, ovviamente.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Grazie mille....però cm faccio a creare 1nuova eccezione???oppure ne uso 1già fatta??se si quale?grazie mille

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Per creare una nuova eccezione devi scriverti una classe che estende Exception (eccezioni checked) o RuntimeException (eccezioni unchecked).
    Per la scelta tra quale delle due, dai un occhiata qua -> http://www.siforge.org/articles/2003....html#hl_01_02

  7. #7
    Ok grazie perfetto..posto qui di seguito la classe dell'eccezione e la classe Persona...cosa c'è di sbagliato??no xkè m da 1errore in compilazione...grazie mille

    ************************************************** ************************************************** ************************************

    class BadConfigurationException extends Exception {
    public BadConfigurationException(String s) {
    super(s);
    }
    }

    ************************************************** ************************************************** ************************************

    import java.io.*;
    import java.util.*;
    import java.lang.*;
    import prog.io.*;

    public class Persona {
    public int eta;
    public String nome;
    public String citta;
    private static int cont;
    public Persona(int a, String s,String t) throws IOException {
    this.eta=a;
    this.nome=s;
    this.citta=t;
    if(cont++>3)
    throw new BadConfigurationException("Impossibile caricarne

    4");
    }
    public int getEta(){
    return eta;}
    public String getNome(){
    return nome;}
    public String getcitta(){
    return citta;}
    public String toString(){
    return nome+" di eta "+eta+" abita a "+citta;
    }
    }

    ************************************************** ************************************************** ************************************

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Nella clausula throws devi mettere il nome dell'eccezione che puo' essere lanciata; nel tuo caso BadConfigurationException.

  9. #9
    Perfetto grazie ho fatto e risolto....però nn capisco xkè mi da 1errore nella classe Test!
    Questo programma può sembrare 1cagata l'ho fatto cm prova volevo solo sapere come è possibile richiamare 1costruttore un tot d volte...grazie per l'aiuto!

    ************************************************** ************************************************** ************************************

    import java.io.*;
    import java.util.*;
    import java.lang.*;
    import prog.io.*;

    public class Test {
    public static void main(String[]args) {
    ConsoleInputManager in = new ConsoleInputManager();
    ConsoleOutputManager out = new ConsoleOutputManager();
    Persona[] io;
    io=new Persona[40];
    int a,b,c;
    String d,e,f;
    String g,h,i;
    a=in.readInt("Inserisci l'eta del primo tipo/a: ");
    g=in.readLine("Inserisci la citta del primo tipo/a: ");
    d=in.readLine("Inserisci il nome del primo tipo/a: ");
    for(int k=0;k<5;k++){
    io[k] = new Persona(a,g,d);
    out.println(io[k].toString());}
    }
    }

    ************************************************** ************************************************** ************************************

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Il problema e' che non hai chiaro il concetto di eccezione.
    L'eccezzioni come abbiamo detto si dividono in due tipi: checked e unchecked.
    Quelle unchecked possono potenzialmente saltare fuori in qualsiasi programma e in qualsiasi momento dell'esecuzione (puntatori nulli, divisioni per zero, ecc). Sono solitamente imputabili a design scorretti o mancati controlli sull'input dell'utente.
    Quelle checked, cioe' quelle che c'interessano a noi, rappresentano invece situazioni anomale in cui il programma puo' incappare, ma facilmente recuperabili. Devono obbligatoriamente essere gestite, cioe' catturate da un blocco try catch che ha il compito di risolvere la situazione anomala. Naturalmente l'eccezioni possono essere gestite a qualsiasi livello del tuo programma (di solito si fa a livelli alti, ad esempio direttamente nel main, perche' la stessa classe in due programmi diversi potrebbe aver bisogno di un diverso modo di trattare l'eccezione).
    Se una classe non gestisce un'eccezione, deve inoltrare il compito all'eventuale metodo chiamante attraverso la clausula throws. Il metodo chiamante dovra' poi fare la stessa scelta, gestire o inoltrare a livello superiore. Una volta arrivati al main, qualsiasi eccezione checked ancora pendente dovra' essere obbligatoriamente gestita.
    Nel tuo caso, il costruttore di Persona informa il main che potrebbe sollevare l'eccezione BadConfigurationException, quindi il main deve gestirla in qualche modo.

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.