Fr4nc0w 1 Denunciar post Postado Agosto 23, 2008 Dae galera, seguinte, me digam o que falta para dar certo o que o enunciado abaixo pede, de fato não quero que ninguem faça pra mim, preciso aprender essa parada auehauehaa.. queria apenas entender o que fiz de errado . Crie um programa que leia dois pares de valores reais (coordenadas) e, utilizando o objeto Ponto2D, mostre a distância entre as coordenadas? A classe PONTO2D foi dada pelo professor já, o segundo cogio que fui eu quem escreveu.. flw e vlw CLASSE DADA public class Ponto2D { public double x, y; public Ponto2D () { x = 0; y = 0; } public Ponto2D (double px, double py){ x = px; y = py; } public double distancia (double px, double py){ return Math.sqrt (Math.pow (x - px, 2) + Math.pow (y - py, 2)); } public double distancia (Ponto2D p){ return Math.sqrt (Math.pow (x - p.x, 2) + Math.pow (y - p.y, 2)); } public String toString () { return "Ponto2D[x=" + x + ",y="+ y + "]"; } } Programa que eu fiz pra usar a classe acima import java.util.*; public class Usa2D { public static void main (String args[]) { Ponto2D ponto2d = new Ponto2D(); Scanner scan = new Scanner (System.in); System.out.println("Digite o Primeiro par de Coordenadas: "); System.out.print("Um: "); double dist1 = scan.nextDouble(); System.out.println(); System.out.print("Dois: "); double dist2 = scan.nextDouble(); ponto2d.distancia (dist1 ,dist2); System.out.println("Distancia eh = "+ponto2d.toString()); } } Compartilhar este post Link para o post Compartilhar em outros sites
Discorpio 1 Denunciar post Postado Setembro 6, 2008 Bom dia Fr4nc0w. Se voce reparar a classe que o Professor lhe deu, voce verá que ela possui dois métodos construtores sobrecarregados que são: public Ponto2D () { x = 0; y = 0; } public Ponto2D (double px, double py){ x = px; y = py; } Assim sendo, quando voce instancia um objeto dessa classe com o método new Ponto2D(), voce já está previamente definindo o valor do primeiro par de coordenada, X = 0, Y = 0, neste caso aqui, como são valores doubles, para que não haja margem de erro, seria bom definir os seus valores assim: X = 0.0 e Y = 0.0. Quando voce chama o método distancia, onde voce fornece as distancias que supomos ser dist1 = 5 e dist2 = 10, o método distancia vai executar assim a instrução: return Math.sqrt (Math.pow (0 - 5, 2) + Math.pow (0 - 10, 2)); Onde voce pode reparar que os valores de x e px, bem como de y e py foram substituídos pelos valores que voce definiu ao chamar o método construtor e distancia. Se o seu professor pediu dois pares de vetores (X,Y), na verdade o que voce fez com o seu código, só forneceu um um par de vetor, então eu sugiro que voce reescreve o seu código dessa maneira: import java.util.*; public class Usa2D { public static void main (String args[]) { Scanner scan = new Scanner (System.in); System.out.println("Digite o Primeiro par de Coordenadas: "); System.out.print("Coordenada 1: "); double coord1 = scan.nextDouble(); System.out.println(); System.out.print("Coordenada 2: "); double coord2 = scan.nextDouble(); Ponto2D ponto2d = new Ponto2D(coord1, coord2); System.out.println("Digite o Segundo par de Coordenadas: "); System.out.print("Coordenada 1: "); coord1 = scan.nextDouble(); System.out.println(); System.out.print("Coordenada 2: "); coord2 = scan.nextDouble(); ponto2d.distancia (coord1 ,coord2); ponto2d.distancia(ponto2d); // Esse aqui voce se esqueceu de invocar. System.out.println("Distancia eh = "+ponto2d.toString()); } } Repare que ao instanciar o objeto ponto2D, voce já fixou o valor da primeira coordenada "new Ponto2D(distX, distY);" Além disso, para calcular a distancia correta, voce se esqueceu de chamar o segundo método sobrecarregado distancia, passando como parâmetro o próprio objeto Ponto2D Um abraço, Jorge da Silva Abreu Compartilhar este post Link para o post Compartilhar em outros sites