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

    dare nomi agli oggetti creati dall'utente e salvarli in un array

    Ciao
    dovrei salvare in un array gli oggetti che l'utente crea, cioè punti, linee, segmenti, cerchi ecc, ai quali io assegno ogni volta un nome (una lettera dell'alfabeto).
    Questi oggetti poi devono essere riutillizabili.
    Ho scritto un metodo toString che mi stampa il Genere dell'oggetto (Punto, Linea, Segmento ecc), il nome e ad esempio se è un punto le sue coordinate. ma ottengo un errore sulla variabile x

    codice:
    public class test2 {      
    EntiGeom [] memoria = new EntiGeom [1000];      
    int nelementi = 0;     
     
    public String toString (){                  
       String s = "[ ";         
       for(int i=0; i < nelementi-1; i++)                   
            s= s + memoria[i].g + memoria[i].nome + memoria[i].x +", ";            
       s = s + memoria[nelementi-1].g + memoria[nelementi-1].nome+" ]"; 
       return s;     
     } 
    
    
    public static void main (String[] args){       
      
    Scanner keyboard = new Scanner(System.in); 
            
    System.out.println("\n Classe di test \n\n");        
    System.out.println("\n Distanza tra due punti\n");                                         System.out.println(" Fornire su due righe distinte le coordinate di due punti, ciascuno seguito dal rispettivo nome, scelto tra le lettere dell'alfabeto");         
    System.out.println(" Sarà calcolata la distanza tra i due punti");    
                                          
    double x1 = keyboard.nextDouble();          
    double y1 = keyboard.nextDouble();          
    String nome1 = keyboard.nextLine(); 
    
             
    double x2 = keyboard.nextDouble();          
    double y2 = keyboard.nextDouble();          
    String nome2 = keyboard.nextLine();           
    
    Punto a = new Punto(x1,y1, nome1);          
    Punto b = new Punto(x2, y2, nome2); 
                                    
    memoria[nelementi] = a;          
    nelementi++;          
    memoria[nelementi] = b;         
    nelementi++;      
                                                     
    System.out.print("\n La distanza e' : ");         
    System.out.println(Metodi.distanza(a,b));       
    System.out.println(toString());        
     return;     
     
    }       
    }

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326
    Premesso che non ho capito molto ciò che vuoi fare...

    ma ottengo un errore sulla variabile x
    quale errore? dove? Cos'è la variabile "x"? Come è fatta la classe "Punto"?

    Ricorda: più sei preciso, più possibilità avrai di essere aiutata...


    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
    la classe punto è questa:
    codice:
    public class Punto extends EntiGeom {         
    double x, y; 
               
    public Punto(){         
    x = 0;        
    y = 0;     
    }  
            
    public Punto( double a, double b){         
    x = a;         
    y = b;     
    }   
           
    public Punto( double a, double b, String c){         
    x = a;         
    y = b;         
    nome = c;         
    g = Genere.Punto;     
    } 
    }


    la variabile x è l'ascissa..


    l'errore è cannot find symbol - variable x

  4. #4
    togliendo la parte di errore, in output ho questo risultato:



    Distanza tra due punti

    Fornire su due righe distinte le coordinate di due punti, ciascuno seguito dal rispettivo nome, scelto tra le lettere dell'alfabeto
    Sarà calcolata la distanza tra i due punti
    0 0 o
    2 0 c

    La distanza e' : 2.0
    [ Punto o , Punto c ]



    ma io vorrei mostrare anche le coordinate dei due punti, ascissa e ordinata, in modo che se l'utente vuole riutillazzare punti gia creati, ne vede le coordinate!

  5. #5
    Ma è ovvio...
    è la classe Punto che estende EntityGeom e non il contrario....
    visto che su EntityGeom non hai la varibile X non te la troverà mai....
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  6. #6
    ok grazie...quinid come posso fare per riuscire ad avere x e y??

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326
    x e y non sono pubbliche nella classe Punto, quindi non ci puoi accedere.
    Ed è anche corretto. Dovresti dotare la classe Punto dei metodi getter (e setter, se necessario) in modo da poter ottenere il valore della coordinata richiamandone il metodo.

    codice:
    public class Punto ... {
       ...
       public int getX() { return x; }
       public int getY() { return y; }
    }
    E al posto di tentare di accedere direttamente ai campi "x" e "y", accederai ai metodi getX() e getY().

    Però dovrai dotare la classe EntityGeom dei due metodi e marcarli, magari, come astratti...

    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

  8. #8
    x e y sono pubbliche...sopra ho postato la classe Punto..ha ragione
    schumy2000
    sul motivo dell'errore...ma come posso fare alllora?

  9. #9
    x e y sono pubbliche...sopra ho postato la classe Punto..ha ragione
    schumy2000
    sul motivo dell'errore...ma come posso fare alllora?

  10. #10
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326
    Originariamente inviato da chiara.venturin
    x e y sono pubbliche...sopra ho postato la classe Punto
    E non mi pare proprio che siano dichiarate pubbliche. Al contrario... non hanno alcun modificatore quindi hanno accesso "package".

    Questo è un campo pubblico
    codice:
    public class Punto ... {
       public int x;
    }
    quelli che hai dichiarato tu non sono pubblici.

    E, comunque, ho spiegato come fare: devi prevedere dei metodi "astratti" nella classe madre (EntityGeom) che andranno concretizzati nella clase figlia.


    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.