Newsgroup: it.comp.java
Titolo: [niubbo] Classe Punto: Help!

Ho definito una classe che mi gestisce i punti in un piano cartesiano, e
funziona correttamente!
Ho problemi con la classe dove è contenuto il "main", la TestPunct!
....ho utilizzato all'interno del main due switch-case: all'interno del
primo consento l'acquisizione, tramite costruttore, dei valori dell'oggetto
punto. Il secondo switch invece, mi consente di effettuare delle operazioni
sui punti creati. Il problema sorge xkè il secondo switch "sembra" nn vedere
gli oggetti creati sicuramente nel primo switch! ...di seguito vi mostro
l'output della compilazione:
.......
C:\j2sdk1.4.1_05\Programmi Java>javac TestPunct.java
TestPunct.java:89: variable P might not have been initialized
                                dist=P.dista(Q);
                                     ^
TestPunct.java:89: variable Q might not have been initialized
                                dist=P.dista(Q);
                                             ^
TestPunct.java:93: variable P might not have been initialized
                                dist=Punto.dista(P,Q);
                                                 ^
TestPunct.java:93: variable Q might not have been initialized
                                dist=Punto.dista(P,Q);
                                                   ^
TestPunct.java:101: variable P might not have been initialized
                                D=P.trasla(h,v);
                                  ^
TestPunct.java:117: variable P might not have been initialized
                                P.traslati(h,v);
                                ^
6 errors
----------------------------------------------------------------------------
----------
Ringrazio chiunque mi dia una mano!!!!
Roberto
P.s. Segue il codice della classe....scusate la mancanza di documentazione
:-(
[CODE]
public class TestPunct{
 public static void main(String[] args)
 { double x,y,h,v,r,dist;
   Punto P,Q,C,D;
   int a, risposta=0;
 C= new Punto();
     System.out.println("Punto Origine creato con coordinate"+C.toString());
     while(risposta!=1 && risposta!=2)
     {
   System.out.println("Creazione 2 punti sul piano cartesiano");
      System.out.println("Effettua una scelta:");
   System.out.println("1) Crea punti con  Coordinate Cartesiane");
      System.out.println("2) Crea punti con Coordinate Polari");
  risposta=Input.readInt();
  switch(risposta)
  {
   case 1:
    System.out.println("Inserisci l'ascissa del 1° Punto");
    x=Input.readDouble();
    System.out.println("Inserisci l'ordinata del 1° Punto");
    y=Input.readDouble();
    P= new Punto(x,y);
    System.out.println("Inserisci l'ascissa del 2° Punto");
    x=Input.readDouble();
    System.out.println("Inserisci l'ordinata del 2° Punto");
    y=Input.readDouble();
    Q= new Punto(x,y);
    System.out.println("Le coordinate cartesiane dei due punti sono:");
    System.out.println("1° Punto:"+ P.toString());
    System.out.println("2° Punto:"+ Q.toString());
         if(P.equals(Q)==true)
       System.out.println("Le coordinate dei due punti coincidono");
   break;
   case 2:
    System.out.println("Inserisci il raggio del 1° Punto");
    r=Input.readDouble();
    System.out.println("Inserisci l'angolo del 1° Punto");
    a=Input.readInt();
    P= new Punto(r,a);
    System.out.println("Inserisci il raggio del 2° Punto");
    r=Input.readDouble();
    System.out.println("Inserisci l'angolo del 2° Punto");
    a=Input.readInt();
    Q= new Punto(r,a);
    System.out.println("Le coordinate cartesiane dei due punti sono:");
    System.out.println("1° Punto:"+ P.toString());
    System.out.println("2° Punto:"+ Q.toString());
     if(P.equals(Q)==true)
       System.out.println("Le coordinate dei due punti coincidono");
    break;
   default:
     System.out.println("Scelta non valida");
   }
  }
  risposta=0;
    while( risposta!=5){
   System.out.println("Scegli un'operazione:\n");
   System.out.println("1) Calcola distanza con metodo di istanza\n");
         System.out.println("2) Calcola distanza con metodo di classe\n");
   System.out.println("3) Crea nuovo punto traslato\n");
         System.out.println("4) Trasla punto\n");
   System.out.println("5) Esci dal programma\n");
   risposta=Input.readInt();
   switch(risposta)
    {
    case 1:
    dist=P.dista(Q);
    System.out.println("La distanza è "+dist);
    break;
    case 2:
    dist=Punto.dista(P,Q);
    System.out.println("La distanza è "+dist);
    break;
    case 3:
    System.out.println("Inserisci di quanto traslare l'ascissa: ");
    h=Input.readDouble();
    System.out.println("Inserisci di quanto traslare l'ordinata: ");
    v=Input.readDouble();
    D=P.trasla(h,v);
    System.out.println("Il nuovo punto ha coordinate "+D.toString());
    if(D.equals(P)==true)
       System.out.println("I due punti sono uguali\n");
    else
        if (D.segue(P)==true)
              System.out.println("Il nuovo punto segue quello di partenza");
        else
             System.out.println("Il nuovo punto precede quello di
partenza");
           break;
    case 4:
    System.out.println("Trasla modificando l'ascissa: ");
    h=Input.readDouble();
    System.out.println("Trasla modificando l'ordinata: ");
    v=Input.readDouble();
    P.traslati(h,v);
    System.out.println("questi sono le nuove coordinate del punto:
"+P.toString());
    break;
    case 5: System.out.println("Adios amigo!");break;
    default:
    System.out.println("Errore di input. Reimmettere dati");
    break;
   }
  }
 }
}
[/CODE]

                                 dist=P.dista(Q);
Il compilatore ti sta indicando che nel punto in cui utilizzi la variabile 
questa stessa puň non essere ancora stata inizializzata.
La soluzione piů banale č quindi inizializzarla al momento della 
dichiarazione:
Punto P = null;
ciao :)
pole
-- 
Note: Some input words use a deprecated author.
Note: Read with -deprecation to understand.

 ha scritto nel messaggio
news:brptqc$7ah$1...@lacerta.tiscalinet.it...


 ha scritto nel messaggio
news:brptqc$7ah$1...@lacerta.tiscalinet.it...


 ha scritto nel messaggio
news:brptqc$7ah$1...@lacerta.tiscalinet.it...


ciao a tutti dovrei svolgere questo esercizio!!!!
qualcuno potrbbe darmi una mano?
magari mi potrebbe indirizzare sulla via giusta!
grazie
Descrizione delle specifiche
I tipi di dato interi disponibili in Java rappresentano numeri interi
compresi in un dato intervallo: compresi
fra -27 e 27-1 per il tipo byte, fra -215 e 215-1 per il tipo short,
fra -231 e 231-1 per il tipo int e fra -263 e 263-
1 per il tipo long.
Si richiede il progetto di un tipo astratto di dati NumeroIntero che
permetta di rappresentare e gestire numeri
interi (con segno) costituiti di un numero arbitrario di cifre. In
particolare, le operazioni di somma,
differenza, prodotto, divisione intera e calcolo del resto, definite per i
tipi primitivi interi sopra citati,
dovranno essere definiti per il tipo di dato NumeroIntero.
Si richiede infine l'implementazione del tipo astratto NumeroIntero mediante
una classe Java.