Criação de um novo obj , pela de entrada de dados


/*1) I. Criar uma classe em Java (atributos e métodos) para representar o seguinte papel (note que é
necessário especificar os tipos dos atributos, retornos, parâmetros e o corpo dos métodos):
Ponto
Deseja-se fazer um programa gráfico para desenhos, e o papel (ou classe) mais básico é o de um Ponto no
plano. O Ponto tem as seguintes características (atributos privados - private): x, coordenadaY
(ambos números inteiros) e cor (uma cadeia de caracteres).
Um Ponto precisa dos seguintes métodos:
a) Método construtor, para inicializar todos os atributos;
b) Métodos modificadores: um para alterar a posição do ponto no espaço e outro para alterar sua
cor;
c) Métodos de acesso: que retornam os valores dos atributos (de modo que os atributos, possam ser
lidos por outros objetos);
*/   import java.util.ArrayList;

    public class Ponto{
   
      private 	int coordenadaX ;
      private int  coordenadaY ; 
      private  String cor = "" ;
   
   	
       public Ponto ( int X2 , int Y2 , String cor  ){
         coordenadaX =  X2  ;
         coordenadaY = Y2;           
         this.cor = cor ;         
      } 
   	
   	
   	
       public void setAlterar ( int  X  , int  Y   ) {
      
         coordenadaX =  X  ;
         coordenadaY = Y;
                 	
      }
   	
       public void setAlterarCor ( String cor ){
         this.cor = cor ; 	
      	
      }
   	
       public String getCor () {
         return cor ;
      
      
      }
   	
   	
       public int  getCoordenadaX  () {
         return  coordenadaX ;
      
      
      }
      
       public int  getCoordenadaY  () {
         return coordenadaY ;
      
      
      }
      
   
   /*
   
   d) Um método chamado distancia( ), que recebe dois parâmetros inteiros, representando as
   coordenadas x e coordenadaY de um outro ponto, e retorna a distância entre estes pontos (um número real).
   */
   
     
       // esse metodo não esta retornando a distancia correta , retorna sempre 0 .. 
   
     
       public double distancia(double  X2, double Y2)
      {
         double distanciaEntrePontos=Math.sqrt(Math.pow(coordenadaX-X2,2)+
            										  Math.pow(coordenadaY- Y2,2));
         return distanciaEntrePontos;
      }
   
   	
   	
   	
      
    
            
      
     
   

   
   
   
   }


   import javax.swing.*;
   import javax.swing.JOptionPane;

    public class TestePonto {
    
    
       public static void main ( String [ ] args ) {
           	// instancio um bj da classe controle 
         ControlePonto  c = new ControlePonto () ;
      	// declaro o usuario
         Ponto u ;
         int resp = 0;
         while ( resp == 0 ) {
            String cor = JOptionPane.showInputDialog ( null, " cor ");
            int  Y2 = Integer.parseInt ( JOptionPane.showInputDialog( null," y "));
           // casting numa linha 
            int  X2 = Integer.parseInt ( JOptionPane.showInputDialog( null," x ")); 
         
            u = new Ponto(X2 ,Y2 , cor ); 
            
            c.cadastrar(u);
            
         	// enquando for = 0 , quer dizer sera cadastrado novo usuario , aparece uma mensagem perguntando se 
         	// o usuario que inserio mais um .
            resp = JOptionPane.showConfirmDialog ( null," Inclua mais um usuario? "  );
         
         	
            System.out.println ( " Mostrar Todos os usuarios \n");     
            c.mostrarUsuarios();
            JOptionPane.showMessageDialog ( null, u.distancia( X2,Y2 ) );   
         
         }
                      
      	
      	
      }
   	
   
   
   
   
   
   
   
   
   
   }



Queria criar outro ponto pela entrada de dados tentei fazer no while mais não deu certo pq precisa fazer um array list () …para guardar os objs pontos …!

ou vcs tem uma melhor forma de fazer ;

oo metodo calcular distancia não sei pq num ta retornando valor corretoo;