Visualizzazione dei risultati da 1 a 2 su 2

Discussione: dubbi vari

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    315

    dubbi vari

    Ciao, apro questa discussione per non sfruttare quella già aperta ed avere così tutti i dubbi relativi al codice in un'unica discussione.


    1) Ho studiato il paragrafo relativo ai costruttori e non mi è chiara una cosa. Allora, partiamo innanzitutto dal fatto che se in una classe non dichiaro un costruttore automaticamente il compilatore ne crea uno in automatico. Io però non ho capito in che caso noi dobbiamo andare a creare un costruttore che prende in input un parametro. Mi sono dato una risposta ma non so se è corretta. Per caso nel momento in cui noi vogliamo andare ad inizializzare le variabili d'istanza con dei valori precisi nel momento in cui si crea l'oggetto della classe?





    2) In un esercizio ho creato questo costruttore:
    codice:
    public Quadrato(int lato)
    {
        int perimetro = lato * 4;
        int area = lato * lato;
        System.out.println("il perimetro è: " + perimetro);
        System.out.println("l'area è: " + area);        
    }
    e il codice non genera errori però se per le variabili locali "perimetro" e "area" aggiungo il modificatore public mi da come errore "illegal start of expression".
    Non è possibile inserire il modificatore perchè in automatico viene considerato quello del metodo (un costruttore in questo caso)?





    3) Un altro esercizio chiede la costruzione della classe TestQuadrato contenente un metodo main() che istanzi un oggetto di tipo Quadrato con lato di valore 5. Successivamente bisogna stampare perimetro e area dell'oggetto appena creato.
    La mia soluzione è la seguente:
    codice:
    public class TestQuadrato
    {
        public static void main(String args[])
        {
            Quadrato oggetto = new Quadrato(5);
        }
    }
    codice:
    public class Quadrato
    {
        public int lato;
    
        public Quadrato(int lato)
        {
            int perimetro = lato * 4;
            int area = lato * lato;
            System.out.println("il perimetro è: " + perimetro);
            System.out.println("l'area è: " + area);        
        }    
    }
    mentre la soluzione proposta dal manuale è questa:
    codice:
    public class TestQuadrato {
        public static void main(String args[]) {
            Quadrato quadrato = new Quadrato();
            quadrato.lato = 5;
            int perimetro = quadrato.perimetro();
            System.out.println(perimetro);
            int area = quadrato.area();
            System.out.println(area);
        }
    }
    codice:
    public class Quadrato {
        public int lato;
        public int perimetro() {
            int perimetro = lato * 4;
            return perimetro;
        }
        public int area() {
            int area = lato * lato;
            return area;
        }
    }
    La mia soluzione funziona però vorrei capire se concettualmente è più corretto fare le "operazioni" all'interno del metodo main (come fatto nella soluzione proposta dal manuale) oppure all'interno del costruttore (come fatto da me).





    4) Non riesco a capire perchè creando una variabile d'istanza e utilizzandola nel costruttore in questo modo
    codice:
    public class Quadrato
    {
        public int lato;
    
        public Quadrato(int l)
        {
            int lato = l;
        }
    ...
    il programma non funziona, o meglio mi restituisce 0 come valore, mentre se nel corpo del costruttore tolgo "int" e quindi scrivo l'istruzione "lato = l;" al posto di "int lato = l;" funziona correttamente.
    Se non erro l'errore viene dal fatto che nei metodi successivi ("perimetro" e "area") il compilatore prende in considerazione non la variabile inizializzata dal costruttore ma quella creata all'inizio che appunto è inizializzata di default a 0 essendo un intero. Io però non capisco perchè definendo il tipo le cose non vadano come dovrebbero.

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    No.
    Non è questo il modo di affrontare le discussioni in un forum.
    Per ciascun problema, va aperta una specifica discussione: mescolare tutti i dubbi dentro una sola discussione è di utilità pressochè nulla per la comunità; il forum serve a condividere le conoscenze: se un utente ha un dubbio effettua una ricerca per trovare una soluzione. Se una discussione trattasse di N problemi contemporaneamente, difficilmente l'utente troverebbe la soluzione al suo particolare problema.

    Quindi, se hai più di un dubbio, apri una discussione per ciascun dubbio, con un titolo che faccia capire esattamente di cosa si parla in quella discussione.

    Tutto questo è scritto, in sintesi, anche nel Regolamento Interno, al punto 6:


    Indica il linguaggio di programmazione nel titolo (es. [JAVA] per discussioni generiche, [J2EE], [JSP], [J2ME], [ANDROID], ecc.) e una descrizione breve ma significativa del problema trattato nella discussione, evitando epiteti come "urgente", "help", "aiuto", "solo per esperti" o termini scontati come "problema con". Un titolo inadeguato può portare alla chiusura della discussione. Ciascuna discussione deve trattare esclusivamente uno e un solo problema: quello indicato nel titolo. Per ogni nuovo problema che non sia strettamente correlato, è necessario aprire una nuova discussione.

    Questa la devo, ovviamente, chiudere.


    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

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.