Aiuto java base

di il
3 risposte

Aiuto java base

Salve, ho un problema con un esercizio per l'università.

public class classeRettangolo
{


public static void rect()
{
int x;
int y;
int h;
int l;
}

public void aumentoRettangolo(int x0, int y0)
{
int x1 = x+x0;
int y1 = y+y0;
}


Stavo scrivendo questo programma dove devo creare molto in generico un rettangolo e effettuare due metodi sopra. Il primo è aumentoRettangol dove devo aumentare le variabili x e y. Però, quando scrivo x+x0 e y+y0 mi dà errori su x e y dove dice che "x/y cannot be resolved to a variable" però l'ho già scritte nel metodo sopra.. e ho messo anche static per renderle accessibili agli altri metodi.. Come posso fare?

3 Risposte

  • Re: Aiuto java base

    Gianluca95 ha scritto:


    Salve, ho un problema con un esercizio per l'università.

    public class classeRettangolo
    {


    public static void rect()
    {
    int x;
    int y;
    int h;
    int l;
    }

    public void aumentoRettangolo(int x0, int y0)
    {
    int x1 = x+x0;
    int y1 = y+y0;
    }


    Stavo scrivendo questo programma dove devo creare molto in generico un rettangolo e effettuare due metodi sopra. Il primo è aumentoRettangol dove devo aumentare le variabili x e y. Però, quando scrivo x+x0 e y+y0 mi dà errori su x e y dove dice che "x/y cannot be resolved to a variable" però l'ho già scritte nel metodo sopra.. e ho messo anche static per renderle accessibili agli altri metodi.. Come posso fare?
    Beh e' corretto che il compilatore di da un errore.
    
    public static void rect()
    	{
    		int x;
    		int y;
    		int h;
    		int l;
    	}
    
    x,y,h,l hanno solamente visibilità in questa funzione.
    Al di fuori nessuno conosce queste variabili.
    E comunque un metodo per la creazione di variabili non ha alcun senso, semmai li dentro li puoi inizializzare.

    Puoi fare così:
    
    
    public class classeRettangolo 
    {
            private int x;
            private int y;
            private int h;
            private int l;
            
    
            public classeRettangolo (){
                    x=5;
                    y=4:
                    h=7;
                    l=3; 
            }
    		
            public void aumentoRettangolo(int x0, int y0) {
                    int x1 = x+x0; 
                    int y1 = y+y0;
            }
    }
    
    
    intanto per inizializzare le variabili basta il costruttore che prende il nome della classe, inoltre meglio non abusare dello static quando non c'è ne bisogno.

    Ciao
  • Re: Aiuto java base

    Grazie mille. Ho due domande:
    -Perchè le variabili le hai messe private?
    -Il professore ci ha detto che dopo dobbiamo fare un altra classe per provare il funzionamento quindi penso che le variabili x,y,h e l le dobbiamo lasciare cosi senza valori.. Quindi posso passare direttamente ad aumentoRettangolo?
  • Re: Aiuto java base

    Le variabili di norma si mettono private, solo in alcuni casi vengono dichiarate pubbliche (solitamente per le costanti).
    Quindi si creano dei setter e getter che ti permetteranno di accedervi in maniera sicura, come questi:
    
    //GET
    public int getX(){
            return x;
    }
    public int getY(){
            return y;
    }
    public int getX(){
            return h;
    }
    public int getL(){
            return l;
    }
    
    //SET
    public void setX(int x1){
            x=x1;
    }
    public void setY(int y1){
            y=y1;
    }
    public void setH(int h1){
            h=h1;
    }
    public void setL(int l1){
            l=l1;
    }   
    

    Non puoi omettere i valori, altrimenti a quale valore sommi x0?
    non lo sa nemmeno il computer quindi si impalla o per meglio dire va in eccezione in fase run.

    Se il professore ha detto così, significa che vuole che voi creiate un costruttore parametrico
    
      public classeRettangolo (int x1, int y1, int h1, int l1){
              x=x1;
              y=y1:
              h=h1;
              l=l1; 
      }
    
    Che accetti parametri a cui è possibile passare i valori dall'altra classe.

    P.S. ma queste cose non le avete fatte?
    Queste sono la BASE della programmazione ad oggetti e non credo che il professore abbia lasciato una consegna senza prima spiegare queste cose.

    ciao.
Devi accedere o registrarti per scrivere nel forum
3 risposte