You are not logged in.

  • Login

1

Monday, August 27th 2007, 7:16pm

JAVA: Abstand zweier Koordinaten

Hi Leute,

hab in der Schule folgende Aufgabe bekommen:

Der Abstand zweier Punkte p1 und p2 (x/y) soll nach Eingabe der Koordinaten berechnet werden und ausgegeben. Hilfe: -> math.sqrt(4)=2

Leider finde ich im Internet gar nichts dazu (math.sqrt) und weiß mir selber auch nicht weiter zu helfen bzw. wie man es anwendet, da ich vom Coden null Ahnung habe und unser Lehrer nicht wirklich hilft .
Kann mir jemand mal nen guten Ansatz schreiben oder mir das Programm mal verständlich erklären? (für dummys) Und das ganze in Java als Programmiersprache.

Wäre echt nice von euch!

DAnke

euer jPG

2

Monday, August 27th 2007, 7:40pm

Moin,

Eingaben machst du mit dem Java.util.Scanner(System.in). Ausgaben mit System.out.println("string"). Naja, und die Mathematik mit den Potenz- (pow) und Wurzelfunktionen (sqrt). Ist ein ganz normaler Pythagoras.

Java Quellcode

1
Math.sqrt(Math.pow(x2-x1, 2)+Math.pow(y2-y1, 2));


Schau dir mal die ersten Postings in diesem Forum an um das Spiel drumherum zu verstehen.
Z.B.

3

Monday, August 27th 2007, 8:03pm

Hallo, ich habe das jetzt mal so gemacht:


import java.io.*;


public class Test
{
public static void main (String argv[]) throws IOException
{
String str;
int x1;
int x2;
int y1;
int y2;
int Abstand;

BufferedReader input = new BufferedReader (new InputStreamReader (System.in));

System.out.print ("Bitte geben Sie x1 ein: ");
x1 = Integer.parseInt(input.readLine());

System.out.print ("Bitte geben Sie y1: ");
y1 = Integer.parseInt(input.readLine());

System.out.print ("Bitte geben Sie x2: ");
x2 = Integer.parseInt(input.readLine());

System.out.print ("Bitte geben Sie y2: ");
y2 = Integer.parseInt(input.readLine());

Abstand = Math.sqrt((x1 * x2) + (y1 * y2));

System.out.print ("Abstand: ");

System.out.println(x + " * " + x + " y + "*" y + = " + Abstand);
}
}


Jetzt sagt er mir: " possible loss of precision bei dem Abstand = math.sqrt... woran liegt das? ode rhab ich generell die richtige richtung eingeschlagen?

4

Monday, August 27th 2007, 8:12pm

Java Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import java.io.*;
 
public class Test
{
public static void main (String argv[]) throws IOException
{
String str;
double x1;
double y1;
double x2;
double y2;
double Abstand;
 
BufferedReader input = new BufferedReader (new InputStreamReader (System.in));
 
System.out.print ("Bitte geben Sie x1 ein: ");
x1 = Integer.parseInt(input.readLine());
 
System.out.print ("Bitte geben Sie y1: ");
y1 = Integer.parseInt(input.readLine());
 
System.out.print ("Bitte geben Sie x2: ");
x2 = Integer.parseInt(input.readLine());
 
System.out.print ("Bitte geben Sie y2: ");
y2 = Integer.parseInt(input.readLine());
 
Abstand Math.sqrt ((y1 - x1) * (y1 - x1) + (y2 - x2) * (y2 - x2));
 
System.out.print ("Abstand: ");
 
Sytem.out.println("Abstand der 2 Punkte beträgt " +Abstand);
}
}




So hab ich es jetzt, dürfte richtig sein oder?

5

Monday, August 27th 2007, 8:33pm

In #28 fehlt die Zuweisung, aber ansonsten siehts ok aus.
Um die Punkt vor Strich Regeln zu erzwingen hätte ich die Multiplikationen noch geklammert.

Außerdem noch ein allgemeiner Tip: Variablennamen von primitive Datentypen wie float schreibt man in der Regel klein.

6

Monday, August 27th 2007, 8:41pm

gut, das funktioniert jetzt, letzte frage:
wie kann ich in der eingabe mit kommazahlen rechnen? er gibt immer nen fehler aus, wenn ich eine kommazahl eingebe! :(

7

Monday, August 27th 2007, 8:49pm

Dann solltest du nicht Integer.parseInt() verwenden, sondern z.B. Double, denn Integer ist nur für ganzzahlige Werte. Außerdem solltest du generell noch gucken, dass du da nur die Wurzel aus Zahlen größer 0 ziehst.

8

Monday, August 27th 2007, 8:54pm

?? hilf mir doch mal bitte nen bisschen also ich habs bis jetzt so weit:

import java.io.*;
import java.lang.Double;

public class Test
{
public static void main (String argv[]) throws IOException
{
String str;
double x1;
double y1;
double x2;
double y2;
double Abstand;

BufferedReader input = new BufferedReader (new InputStreamReader (System.in));

System.out.print ("Bitte geben Sie x1 ein: ");
x1 = Integer.parseInt(input.readLine());

System.out.print ("Bitte geben Sie y1: ");
y1 = Integer.parseInt(input.readLine());

System.out.print ("Bitte geben Sie x2: ");
x2 = Integer.parseInt(input.readLine());

System.out.print ("Bitte geben Sie y2: ");
y2 = Integer.parseInt(input.readLine());

Abstand = Math.sqrt ((y1 - y2) * (y1 - y2) + (x1 - x2) * (x1 - x2));

System.out.print ("Abstand: ");

System.out.println("Abstand der 2 Punkte beträgt " +Abstand);
}
}


Wie mache ich aus dem double bei der Enigabe nen Float oder Double? Und wie mach ich das mit dem < 0 ?
Ich mach das erst seit gestern Leute :( bin schon am Java ist auch eine Insel schauen nud so aber ich brauch nen kleinen Startup tipp ;(
und von schleifen und so hab ich noch keine ahnung, falls einer damit an kommt ^^

9

Monday, August 27th 2007, 9:21pm

Unter dem Eingabefeld hast du übrigens Buttons für das SyntaxHighlighting. Einfach Quelltext markieren und das Java-Kaffee Symbol auswählen. Außerdem solltest du deinen Quelltext einrücken. Das hilft nicht nur dir, sondern auch uns!

Ansonsten solltest du nicht immer schon nach 2 Minuten schon aufgeben. Erster Schritt beim Programmieren lernen ist Eigeninitiative.. Google beim nächsten mal.. sind ja noch die absoluten Java Basics.

Für dieses Problem erhältst du noch die Lösungen: Statt Integer.parseInt nimmst du Double.parseDouble.
und die Abfrage für einen Wert sieht so aus:

Java Quellcode

1
2
3
4
if(x1<0) {
	System.out.println("Fehler");
	System.exit(0);
}

10

Monday, August 27th 2007, 9:26pm

Source code

1
 x1 = Integer.parseInt(input.readLine());

lies dir die zeile mal genau durch. Dann weißt du was er meint.

Du liest eine ganzzahlige Zahl ein (z.B. 1, 2, 3 oder 4) und verwandelst diese in eine Gleitkommazahl (z.B. 1.0, 2.0, 3.0 oder 4.0)
Das machst du nur in dieser Zeile. Wenn du eine Gleitkommazahl einlesen willst ist also "Integer.parseInt" falsch.

11

Wednesday, November 7th 2007, 8:45pm

Moin,dieser Thread hier hat mir sehr geholfen da ich eine ähnliche Aufgabe machen möchte...bei mir gibt es nur den Unterschied das man am anfang des Programms auswählen kann wieviele Überprüfungsszenarien man haben möchte...Also wenn man z.B 5 eingibt kann man in jedem von den 5 szenarien 2 Punkte angeben die dann berechnet werden!

Bloss weiss ich nicht wie ich das machen soll....kann mir da einer helfen??

12

Wednesday, November 7th 2007, 11:03pm

Abend... eigentlich keine große Sache....

Java Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public class Test {
	public static void main (String argv[]) throws IOException
	{
		BufferedReader input = new BufferedReader (new InputStreamReader (System.in));
 
		System.out.print ("Welches Szenario ");
		int choice = Integer.parseInt(input.readLine());
 
		switch(choice) {
			case 1:
				szenario1();
			break;
			case 2:
				szenario2();
			break;
			case 3:
				szenario3();
			break;		
		}
	}
 
	public static void szenario1() {
		BufferedReader input = new BufferedReader (new InputStreamReader (System.in));
 
		System.out.print ("Frage1 ");
		String choice = input.readLine();
	}
 
	public static void szenario2() {
		....
	}
}

13

Thursday, November 8th 2007, 7:12am

hey danke für deine Antwort,aber bei deinem Programm kan man ja auswählen welches Szenario man möchte aber nicht wieviele man haben möchte...Ich möchte das das eiugentliche Programm mehrere Szenarien prüft und nicht nur eins...so das man 5 Szenarien eingibt und er dann von mir 10 koordinaten erfragt....

14

Thursday, November 8th 2007, 9:15am

Wenn du sie direkt auswertest, brauchst du den Code nur in eine Funktion zu stecken und die 5x aufrufen:

Java Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
public class Test {
	public static void main (String argv[]) throws IOException {
		BufferedReader input = new BufferedReader (new InputStreamReader (System.in));
		System.out.print ("Wieviele Szenarien ");
		int choice = Integer.parseInt(input.readLine());
 
		for(int i=0; i<choice; i++) {
			szenario1();
		}
	}
 
	public static void szenario1() { ... }
}

15

Thursday, November 8th 2007, 11:42am

k dir,hast mir sehr geholfen....habe das Programm nun vollständig und es funktioniert wunderbar...

Similar threads

Social bookmarks