Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    4

    Aiuto JAVA! (package\import...)

    ciao a tutti..sono all'università ad ingegneria informatica e sto muovendo i primi passi con java.
    ho passato l'esame di java1 con 28..e ora sto seguendo il corso di java2 ma ho un problemone con una cosa..vi prego di aiutarmi perchè ho consultato già altri ma niente..

    è 1 cosa banale ma mi ci sto perdendo nonostante abbia letto appunti, paragrafi di libri, documentazione e altro on line.

    innanzi tutto ho settato il CLASSPATH con .; c:\;
    (poi ho provato anche con c:\poo; c:\poo\utilita; e altre 9999combinazioni)

    uso textpad e devo usare questo.

    la mia cartella di lavoro è c:\poo

    essa contiene i seguenti elementi:

    1)il file poligono.java in cui c'è import poo.utilita.*;
    2) una sottodirectory chiamata utilita in cui c'è il file Geometria.java che contiene la riga di comando package poo.utilita;

    vi allego anche i programmini stupidini:

    QUESTO E' c:\poo\utilita\Geometria.java

    package poo.utilita;
    class Punto{
    private double x,y;
    public Punto (double valX, double valY){
    x= valX; y=valY;
    }
    public double getX(){return x;}
    public double getY(){return y;}

    public double distanza (Punto p){
    return Math.sqrt((p.x-x)*(p.x-x)+(p.y-y)*(p.y-y));
    }
    public String toString (){
    return "<"+x+","+y+">";
    }}



    public class Geometria {
    public static void main (String[]args){
    Punto p0=new Punto (1,2);
    Punto p1=new Punto (4,1);
    Punto p2=new Punto (3,5);

    double d01=p0.distanza(p1);
    double d02=p0.distanza(p2);
    double d12=p1.distanza(p2);

    double perimetro=d01+d02+d12;
    System.out.printf("perimetro=%1.2f\n",perimetro);
    System.out.printf("area=%1.2f\n",Math.sqrt((perime tro/2)*(perimetro/2-d01)*(perimetro/2-d02)*(perimetro/2-d12)));

    }}


    QUESTO E' c:\poo\Poligono.java

    import poo.utilita.*;
    public class Poligono{
    private Punto[]v;
    public Poligono(Punto[]v){
    this.v=new Punto [v.lenght];
    for (int i=0; i<v.lenght; i++)
    this.v[i]=new Punto (v[i]);
    }}



    compilando GEOMETRIA non mi dà errore ma nell'esecuzione esce exception in thread main java.lang.NoClassDefFoundErrors poo/utilita/Geometria.

    compilando POLIGONO mi dà subito errore:

    C:\poo\Poligono.java:1: package poo.utilita does not exist
    import poo.utilita.*;
    ^
    C:\poo\Poligono.java:3: cannot access Punto
    bad class file: c:\poo\Punto.class
    class file contains wrong class: poo.Geometria.Punto
    Please remove or make sure it appears in the correct subdirectory of the classpath.
    private Punto[]v;




    aiutoooooooooooooooo

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Allora...
    1)
    codice:
    //Sintassi errata
    System.out.printf("perimetro=%1.2f\n",perimetro);
    System.out.printf("area=%1.2f\n",Math.sqrt((perimetro/2)*(perimetro/2-d01)*(perimetro/2-d02)*(perimetro/2-d12)));
    Questa cosa qua in java non esiste(ti confondi con C).
    codice:
    //Sintassi corretta
    System.out.println("perimetro="+perimetro);
    System.out.println("area="+Math.sqrt((perimetro/2)*(perimetro/2-d01)*(perimetro/2-d02)*(perimetro/2-d12)));
    2)
    La classe Punto dev'essere public e salvata in una classe a se, non come inner class, altrimenti non e' accessibile.
    codice:
    //DA SALVARE COME Punto.java
    package poo.utilita;
    public class Punto{
    private double x,y;
    public Punto (double valX, double valY){
    x= valX; y=valY;
    }
    public double getX(){return x;}
    public double getY(){return y;}
    
    public double distanza (Punto p){
    return Math.sqrt((p.x-x)*(p.x-x)+(p.y-y)*(p.y-y));
    }
    public String toString (){
    return "<"+x+","+y+">";
    }}
    3)si scrive length e non lenght
    codice:
    v.length
    4)Il costruttore di Punto non vuole un oggetto di tipo punto ma 2 numeri quindi, a seconda del fatto che tu voglia un nuovo oggetto o usare lo stesso per entrambi gli array
    codice:
    this.v[i]=new Punto (v[i].getX, v[i].getY);
    oppure
    codice:
    this.v[i]=v[i];

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    4
    oddio grazie mille
    ora funziona tutto!
    ti voglio 1 mondo di bene!

    se scriverò altri dubbi in futuro spero non mi ucciderete..come posso ricompensarti?
    una ricarica al cel?:P

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328

    Moderazione

    Per questa volta è passata... per la prossima volta leggi il Regolamento: il titolo non è conforme.


    Lo modifico io.


    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.