Java Vervollständigung eines Progs.

punki1

Lieutenant
Registriert
Dez. 2009
Beiträge
512
Hallo,

ich soll aus den Koordinaten zweier Punkte den Abstand bestimmen und komme nicht weiter da ich den Fehler nicht finde. Ich bekomme immer den Abstand 1 raus, was aber nicht stimmt, wenn ich die Daten x1=y1=3 und x2=7, y2=6 eingebe.

Code:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
	public class PunktAbstand {
	public static void main (String argv[]) throws IOException
	{
		String str;
		double a,b,c,d,e;
		
		BufferedReader input=new BufferedReader (new InputStreamReader (System.in));
		
		System.out.println("1. Punkt x: ");
		str=input.readLine();
		a=Double.parseDouble(str);
		
		System.out.println("1. Punkt y: ");
		str=input.readLine();
		b=Double.parseDouble(str);
		
		System.out.println("2. Punkt x: ");
		str=input.readLine();
		c=Double.parseDouble(str);
		
		System.out.println("2. Punkt y: ");
		str=input.readLine();
		d=Double.parseDouble(str);
		
						
		e=Math.sqrt(Math.pow(b-a, 2)+Math.pow(d-c, 2));
		
						
		System.out.print ("Punktabstand: "+e+" ");
		

}}

Bitte einfach erklären, wenn einer den Fehler weis, da ich noch Anfänger bin

Schonmal danke für Hilfe.
 
ich versteh zwar nix vom programmieren oder so aber:

so wie ich das erkennen kann ist deine berechnung einfach nur falsch.

e=Math.sqrt(Math.pow(c-a, 2)+Math.pow(d-b, 2));

könnte es so richtig sein?

MfG
 
1. Wie wäre es, wenn du deine Variablen mal richtig benennst? Mit a-e kann keiner etwas (auf den ersten Blick) anfangen. Mit x1,y1,x2,y2 hingegen weiß man sofort, was gemeint ist.
2. Hast du schon mal etwas vom Debuggen gehört? Hätte dir an dieser Stelle geholfen.
3. Du rechnest momentan sqrt((y1-x1)^2 + (y2-x2)^2). Fällt dir etwas auf? Wahrscheinlich ja, da ich vernünftige Namen verwendet habe.
 
Es ist zwar Ansichtsache, aber irgendwie finde ich es nicht gut, wenn man mit Main Methoden übt.
Man lernt meiner Meinung nach mehr, wenn man die Methode so schreibt und über JUnit dann testet.


Code:
package PunktAbstand;


public class PunktAbstand {
public String distance(double x1, double y1, double x2, double y2)
{
         double mydistance = Math.round(100 * Math.sqrt(Math.pow(x2-x1, 2)+Math.pow(y2-y1, 2)));
         return "Punktabstand: " + mydistance/100;

}
	
}



Code:
package PunktAbstand;

import static org.junit.Assert.*;

import org.junit.Test;

public class TestPunktabstand {

@Test
public void testDistance()
{
	PunktAbstand abstand = new PunktAbstand();
	assertEquals ("Punktabstand: 47.38", abstand.distance(20, 84, 67, 90));
}
}
 
Zuletzt bearbeitet:
Das mag schon sein Airbag, aber einen Anfänger mit JUnit zu beschießen ist schon nicht ohne. :D Vor allem lehrt das kein Einsteiger-Tutorial, das mir jemals untergekommen ist und auch in Büchern sucht man danach oft vergeblich.
 
Ja nagut. Das kam bei mir in der zweiten Hausübung dran. (etwa dritte Vorlesungswoche in Java )
Das ganze JUnit geteste ist aber auch in den meisten Tutorials einfach nur viel zu umständlich erklärt. ^^
 
hmmm testgetriebene Entwicklung - dafür bin ich selbst @work zu faul bislang gewesen. Jeden Getter, Factory, DAO etc. damit zu testen, einfach zu umständlich.
 
Ich sage ja auch nicht, dass man alles testen muss. Vor allem da sich die richtige Funktion einer Methode auch durch den Test einer anderen Methode ergeben kann. Aber oftmals ist es wirklich angenehmer es sich auf der Konsole ausspucken zu lassen.
Ums Testen kommt man aber so oder so nicht rum.
 
Zurück
Oben