Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 13 su 13

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    55
    ...qui di seguito un esempio ogni classe è un file a se stante.
    nella classe divisione_3 ho un errore sull'overriding del metodo che proprio non riesco a togliere....

    codice:
    package eccezioni_01;
    
    public class Divisione {
        
        public int a;
        public int b;
        
        //metodo che fa la divisione
        public double divide (int a, int b)throws ArithmeticException{
            
            if (b==0){
                throw new ArithmeticException();
            } else {
                return (a/b);
            }
           
            
        }
    }
    Ultima modifica di LeleFT; 29-07-2014 a 16:04 Motivo: Cambiato tag QUOTE in tag CODE

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    E ci fai vedere come hai fatto l'override?


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    55
    ....ora sono a casa e ho dovuto scrivere un'altro tipo di esempio....e facendo un po di attenzione ho scoperto l'errore....
    ovvero la posizione in cui andavo a scrivere il throws tipoEccezione era sbagliata.
    Allego il codice qualora possa servire ad altri....

    vado avanti con il cercar di capire le altre eccezioni, alcune proprio strane!!!
    grazie, un po ostico l'argomento

    bb


    codice:
    public class CalcoliA {
        
        private int a;
        private int b;
        private double risultato;
        
        public void setA (int a){
         this.a = a;   
        }
        public int getA (){
            return a;
        }
        public void setB (int b){
            this.b = b;
        }
        public int getB (){
            return b;
        }
        public void setRisultato (int a, int b)throws ArithmeticException {
            this.a = a;
            this.b = b;
            if (b ==0){
                throw new ArithmeticException();
            }
            this.risultato = a/b;
            System.out.println("risultato: " + (a/b));
        } 
        public double getRisultato(){
            return risultato;
        }
        
        
        
    }
    
    ////////
    public class CalcoliB extends CalcoliA{
        
        //costruttore che richiama la classe base
        public CalcoliB (){
            super ();
        }
       
    
        @Override
        public void setB(int b) {
            super.setB(b); //To change body of generated methods, choose Tools | Templates.
        }
    
        @Override
        public void setA(int a) {
            super.setA(a); //To change body of generated methods, choose Tools | Templates.
        }
        //vado a fare un override di metodo che lancia una eccezione 
        @Override
        public void setRisultato (int a, int b){
            super.setA(a);
            super.setB(b);
            if (b==0){
                System.out.println("sono la classe derivata");
                throw new ArithmeticException(); 
            }
            double risultato = (double) (a/b);
            System.out.println("ho settato il risultato a: " + risultato);
        }
    }
    
    /////////
    
    public class CalcoliC extends CalcoliB{
        
        //costruttore
        public CalcoliC (){
            super();
        }
        
        //vado a fare un override di metodo che lancia una eccezione 
        @Override
        public void setRisultato (int a, int b) throws MiaEccezione {
            super.setA(a);
            super.setB(b);
            if (b==0){
                System.out.println("sono la classe derivata C");
                throw new MiaEccezione(); 
            }
            double risultato = (double) (a/b);
            System.out.println("ho settato il risultato a: " + risultato);
        }
    }
    
    /////
    
    public class MiaEccezione extends ArithmeticException {
        
        public MiaEccezione (){
            System.out.println("Mia eccezione. Diviso zero non possibile");
        }
    }
    
    /////
    
    public class TestCalcoli {
        
        public static void main (String args[]){
        
        CalcoliA cal1 = new CalcoliA ();
        try {
        cal1.setRisultato(20, 0);
        } catch (ArithmeticException e){
            System.out.println("Classe A - divisione per zero non possibile");
        } finally {
            System.out.println("finally di A - viene sempre eseguito");
        }
         
        ///
        CalcoliB cal2 = new CalcoliB();
        try {
        cal2.setRisultato(30, 0);
        } catch (ArithmeticException e){
            System.out.println("Classe B derivata - hai diviso per zero. Non è consentito!");
        }
        
        ///
        CalcoliC cal3 = new CalcoliC();
        try {
        cal3.setRisultato(50, 0);
        } catch (MiaEccezione e) {
          System.out.println("Classe c derivata - hai diviso per zero. Non è consentito!");  
        }
           
        }
    }
    
    //////
    public class CalcoliD extends CalcoliB {
        //costruttore
        public CalcoliD (){
            super();
        }
        
        //vado a fare un override di metodo che lancia una eccezione 
        @Override
        public void setRisultato (int a, int b) throws ArithmeticException {
            super.setA(a);
            super.setB(b);
            if (b==0){
                System.out.println("sono la classe derivata D");
                throw new ArithmeticException(); 
            }
            double risultato = (double) (a/b);
            System.out.println("ho settato il risultato a: " + risultato);
        }
    }
    Ultima modifica di LeleFT; 30-07-2014 a 09:02 Motivo: Aggiunti i tag CODE

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 © 2026 vBulletin Solutions, Inc. All rights reserved.