Lat/Longitude

tomtom88271

Mitglied
Hi !
mein code:

Java:
public class idee {

	/**
	 * @param args
	 */
	public static void main(String[] args) 
	{
		int n = StdInput.readInt("Zeilengröße: ");
		int x = StdInput.readInt("Spaltengröße: ");
		double [][] koordinate = InputKoordinate(n,x);
		for (int j = 0; j < koordinate.length; j++)
		{
			for (int i = 0; i < koordinate[i].length; i++) 
				System.out.println("Long:" + koordinate[j][0] + " Lat:" + koordinate[j][1]);//+ ". Distanz: " + distanz[j][2]);
		    }
		}
		public static double [][] InputKoordinate (int n, int x)
		{
			double [][] name = new double [n][x];
			for (int j = 0; j < name.length; j++)
			{
				for (int i = 0; i < name[i].length; i++)
			   {
				name [j][i] = StdInput.readDouble("Name: ");
			   }
			}
			return name;
		}
	public static double distanz (double[][] ort, double laengengrad2, double breitengrad2)
	{
		final double erdradius=6372;
		double a1 = Math.toRadians(laengengrad2);
		double b1 = Math.toRadians(breitengrad2);

		for (int j = 0; j < ort.length; j++)
		{
			for (int i = 0; i < ort[i].length; i++)
		   {
				ort [j][i] = StdInput.readDouble("Name: ");
		   }
		}
		double a2 = Math.toRadians(breitengrad2);
		double b2 = Math.toRadians(breitengrad2);
		double d = Math.acos(Math.cos(a1)*Math.cos(b1)*Math.cos(a2)*Math.cos(b2)+Math.cos(a1)*Math.sin(b1)*Math.cos(a2)*Math.sin(b2)+Math.sin(a1)*Math.sin(a2));

		return d*erdradius;
	}
}

mein problem:
die distanzmethode muss ein [][]-Array zurückgeben, damit ich es in der main auslesen kann. leider weiss ich nicht genau, was ich als paramter reinschreibe..
iwie so ?
Java:
public static double [][] distanz (double[][] ort, double laengengrad2, double breitengrad2)
	{

return // [][]array
}
 
Zuletzt bearbeitet von einem Moderator:

njans

Top Contributor
Ich habe keine Ahnung, was deine Methode machen soll...

Java:
public static double[][] distanz (double[][] ort, double laengengrad2, double breitengrad2)
{
 double[][] resultArray = new double[<größe musst du selbst wissen>][];
 // Ab hier musst du es befüllen
 return resultArray;
}
 

tomtom88271

Mitglied
Meine Distanzmethode soll 2 koordinatenpunkte erhalten..einen längen und einen breitengrad. das ist quasi ein Ort.
dieser ort, also diese punkte werden mit einem fixen ort und deren punkte vergleichen und die distanz ermitteln.
´deswegen is die ganze acos(...) formel da....

die rückgabe muss auf jeden fall in meinen augen ein 2darray sein um es oben in der main in der ausgabe aulesen zu können, weil ich möchte, das es so aussieht:
längengrad|Breitengrad|Distanz <---- quasi als tabelle zu sehen
 
G

Gast2

Gast
Joa ok, weil die Frage nach dem 2D double Array (inkl. Lösung) habe ich auch in dem anderen Thread gefunden.
 

HimBromBeere

Top Contributor
Die Berechnung von Distanzen in geographischen Koordinaten ist ein wenig umständlich. Da musst du dich mal sphärischer Geometrie auseinander setzen.
Hier mal ´ne Kurzfassung: Dreieck ? Wikipedia

Ich nehme mal an, das wusstest du aber schon, deine Formel sieht ja doch ein wenig komplexer aus als bei einem ebenen rechtwinkligen Dreieck.
 
Zuletzt bearbeitet:

tomtom88271

Mitglied
Die Berechnung von Distanzen in geographischen Koordinaten ist ein wenig umständlich. Da musst du dich mal sphärischer Geometrie auseinander setzen.
Hier mal ´ne Kurzfassung: Dreieck ? Wikipedia


Java:
double a1 = Math.toRadians(breitengrad1);
			double a1 = Math.toRadians(laengengrad1);
			double b2 = Math.toRadians(breitengrad2);
			double a2 = Math.toRadians(laengengrad2);
                        double b1 = Math.toRadians(breitengrad1);
			double d = Math.acos(Math.cos(a1) * Math.cos(b1) * Math.cos(a2)
					* Math.cos(b2) + Math.cos(a1) * Math.sin(b1) * Math.cos(a2)
					* Math.sin(b2) + Math.sin(a1) * Math.sin(a2));	
			return d * EARTH_RADIUS_KM;

mit dem hab ich mich schon auseinandergesetzt. "double d = Formel" ist richtig
 

HimBromBeere

Top Contributor
Achso, OK, wollte nur nochmal sicher gehen. Wenn ich mich recht erinnere, bekommst du dabei immer zwei Lösungen heraus, die beide auf dem selben Großkreis liegen (der Kosinus liefert eine Mehrdeutigkeit pro Periode). Ansonsten läuft du nämlich nicht von Berlin nach Moskau direkt, sondern erstmal über Rio...
Wenn also deine Distanz unverhältnismäßig hoch ist, weißt du woran es liegen könnte
 

tomtom88271

Mitglied
ich hab auch schon alles ohne arrays versucht und die richtige entfernung ist dabei herausgekommen. das ist alles überhaupt kein problem. ich hab einfach nur das problem die 2d arrays in double umzuwandeln. weil ich muss math.toradians(<double werte>) nehmen.. anders gehts ned... ist in aufgabe (die ich nur mündlich bekommen habe) beschrieben
 

HimBromBeere

Top Contributor
in den Dimensionen des Arrays sollen die geographischen Angaben in Lat/Lan stehen? Das funktioniert ja nur solange du nur ganzzahlige Koordinaten verwendest, was aber hochgradig ungenau sein dürfte... Ist es nicht möglich, zwei Instanzen einer Klasse GeoLoc zu erstellen, deren Distanz zu berechnen und dann bei der Ausgabe einfach die Koordinaten der Objekte mitauszugeben?
 

tomtom88271

Mitglied
mit sicherheit wird es das sein.
wir sollen nur nich objektorientiert programmieren....wir sind quasi noch ganz am anfang.

du willst mir quasi damit sagen, dass es eigentlich gar nicht möglich ist, in die methode [][]-arrays reinzuschicken, die als double werte auszulesen. diese umzurechnen und die gegebenen distanzen in ein neues [][] einzulesen ?!
soll ich es also bei einem normalen double belassen ?
 

HimBromBeere

Top Contributor
Du kannst in ein double Array double Werte einlesen und wieder auslesen, da musst du nichts umwandeln. Das sind doch ganz normale Zahlen.

Den Distanzwert kannst du problemlos abspeichern, aber halt nicht die Koordinaten als Double, also das folgende geht nicht: d[53,34][13,46] = distanz;
 

tomtom88271

Mitglied
hilft mir irgendwie nicht weiter....

verbal wurde mir folgendes gesagt:
"prüfungsinhalt -> 2Dim. Arrays und orte in eine DistanzMatrix einlesen können"
 

Final_Striker

Top Contributor
längengrad|Breitengrad|Distanz <---- quasi als tabelle zu sehen

Java:
double[][] arr = new double[2][3]; // Array für 2 Datensätze

// Datensatz 1
arr[0][0] = 231,2; // Längengrad
arr[0][1] = 53,1; // Breitengrad
arr[0][2] = 43,2; // Distanz 

arr[1][0] = 261,2; // Längengrad
arr[1][1] = 143,1; // Breitengrad
arr[1][2] = 647,2; // Distanz

So könntest du das z.b. machen.
 

tomtom88271

Mitglied
ehrlich gesagt weiss ich das auch nicht genau. ich hatte mir halt gedacht...

das in [0][0] Längengrad, [0][1] Breitengrad und in [0][2] distanz ... steht.

aber ich weiss es nicht, vll wisst ihr da was...kennt ihr vll so ne aufgabenstellung ?
 

tomtom88271

Mitglied
Java:
double[][] arr = new double[2][3]; // Array für 2 Datensätze

// Datensatz 1
arr[0][0] = 231,2; // Längengrad
arr[0][1] = 53,1; // Breitengrad
arr[0][2] = 43,2; // Distanz 

arr[1][0] = 261,2; // Längengrad
arr[1][1] = 143,1; // Breitengrad
arr[1][2] = 647,2; // Distanz

So könntest du das z.b. machen.

diesen code hatte ich auch schon bei mir drinstehen, aber da wirst ja nicht mehr fertig, wenn du des händisch eingeben musst oder ?!
 

HimBromBeere

Top Contributor
Wieso? Musst doch nur 6Zeilen abtippen, die ersten drei für den ersten Punkt, die letzten drei für den zweiten Ort (die Distanz steht dann natürlich doppelt im Array, was auch irgendwie sinnfrei ist), also einmal bei Arr[0][2] und einmal bei Arr[2][2]

Genau das schreibst du in deine Distanz-Methode rein...
 

tomtom88271

Mitglied
also du meinst das selbe wie striker ?

wenn ich die koordinaten eingelesen habe...weise ich denen einfach nen festen ort zu, also die distanz die ich ausrechnen hab lassen ?
 

diggaa1984

Top Contributor
2Dim. Arrays und orte in eine DistanzMatrix einlesen können

in Anbetracht dessen ergibt sich grad folgendes Gebilde nach meinem Verständnis:
  • 2-dim Array für die Distanzmatrix
Code:
  A  B  C
A 0  20 31
B 20  0 43
C 31 43 0
  • Array für Koordinaten der Orte: double[3][2] (3 Datensätze á 2 Koordinaten)

Vielleicht kannst dich mit dieser Idee anfreunden!? So richtig weisst du selbst ja nicht was du genau möchtest, da kann man dir auch nur schwer helfen.

Sinn wäre nun, das 2. Array mit den Koordinaten, einlesen zu lassen, oder fest vorzuschreiben, und dann sämtliche Distanzen aller Einträge zu berechnen (die Distanzmatrix eben)
 
Zuletzt bearbeitet:

tomtom88271

Mitglied
ja genau, du hast es schon richtig verstanden, so wurde das gemeint.

also zumindest glaub ich das...obs dann wirklich so ist, weiss ich natürlich nicht. des war jetzt so meine eigene kreativität
 

diggaa1984

Top Contributor
ja genau, du hast es schon richtig verstanden, so wurde das gemeint.

also zumindest glaub ich das...obs dann wirklich so ist, weiss ich natürlich nicht. des war jetzt so meine eigene kreativität
:D .. ja wer so ungenau ne Aufgabenstellung formuliert, darf Kreativität erwarten, solange du das gut genug begründest sollte das ja kein Problem sein.

Java:
//ich mach das jetzt einfach ma fuer alles abstrakt, daher nur ein parameter
public static double[][] distanz(double[][] koordinaten) {
    int anzahlOrte = koordinaten.length;
    double[][] distanzMatrix = new double[anzahlOrte][anzahlOrte];

    for(int i=0; i<anzahlOrte; i++) {
        distanzMatrix[i][i] = 0; //Reflexivitaet
        for(int j=i+1; j<anzahlOrte; j++) {
            //Berechnung mit koordinaten[i][0] = Laenge / koordinaten[i][1] = Breite und
            //koordinaten[j][0] = Laenge / koordinaten[j][1] = Breite
            double distanz = formel;
            distanzMatrix[i][j] = distanz;
            distanzMatrix[j][i] = distanz; //Symmertrie
        }
    }

    return distanzMatrix;
}

so ganz grob und ohne Gewähr ^^
 
Zuletzt bearbeitet:

tomtom88271

Mitglied
Java:
//Methode zur Erstellen der Matrix index = [Längengrad][Breitengrad] -> 2Orte
	public static double [][] koordinate (int l, int b)
	{
		double [][] ort1 = new double [l][b];

		for (int i=0; i<ort1.length; i++)
		{
			for (int j = 0; j<ort1[i].length;j++)
			{
				ort1[i][j] = StdInput.readDouble ("Längengrad, dann Breitengrad: ");
			}
		}
		return ort1;
	}
	//Methode zur Berechnung der Distanz, [0][0] = berechne Distanz durch formel mit erdradius
	public static double [][]distanz (double [][] distanz)
	{
		final double erdradius=6372;
	    int anzahlOrte = distanz.length;
	    double[][] distanzMatrix = new double[anzahlOrte][anzahlOrte];
	 
	    for(int i=0; i<anzahlOrte; i++) 
	    {
	        distanzMatrix[i][i] = 0;
	        for(int j=1; j<anzahlOrte; j++) 
	        {
	            double distanz1 = erdradius *(Math.acos(Math.cos(i)*Math.cos(j)*Math.cos(laengengrad2)*Math.cos(breitengrad2)+Math.cos(i)*Math.sin(j)*Math.cos(laengengrad2)*Math.sin(breitengrad2)+Math.sin(i)*Math.sin(laengengrad2)));;
	            distanzMatrix[1][1] = distanz1;
	            distanzMatrix[j][i] = distanz1;
	        }
	    }
		
	}

so ich hab die 2 methoden...in dem 2d array definiert jede zeile ein ort mit längen- und breitengrad.

wenn ich aber die distanz aus den beiden berechnen will, brauch die formel einzelne double werte..ich bin grad am rumprobieren, komm aber nicht darauf, wie ich der formel jez sage, was die richtigen werte sind...kann mir da jemand fix helfen ?!
 

tomtom88271

Mitglied
Java:
public class letzteubung {

	/**
	 * @param args
	 */
	public static void main(String[] args) 
	{
		int n = StdInput.readInt("Zeilengröße: ");
		int x = StdInput.readInt("Spaltengröße: ");
		double [][] koordinate = koordinate(n,x);
		for (int j = 0; j < koordinate.length; j++)
		{
			for (int i = 0; i < koordinate[j].length-1; i++) 
				System.out.println("Long:" + koordinate[j][0] + " Lat:" + koordinate[j][1]);
			
		}	
		printdistanz(distanz(koordinate));
	}
	//Methode zur Erstellen der Matrix index = [Längengrad][Breitengrad] -> 2Orte
	public static double [][] koordinate (int l, int b)
	{
		double [][] ort = new double [l][b];
		for (int i=0; i<ort.length; i++)
		{
			for (int j = 0; j<ort[i].length;j++)
			{
				ort[i][j] = StdInput.readDouble ("Längengrad, dann Breitengrad: ");
			}
		}
		return ort;
	}
	//Methode zur Berechnung der Distanz, [0][0] = berechne Distanz durch formel mit erdradius
	public static double [][]distanz (double [][] distanz)
	{
		final double erdradius=6372.0;
	    int anzahlOrte = distanz.length;
	    double[][] distanzMatrix = new double[anzahlOrte][anzahlOrte];
	 
	    for(int i=0; i<anzahlOrte; i++) 
	    {
	        distanzMatrix[i][i] = 0;
	        for(int j=1; j<anzahlOrte; j++) 
	        {
	            double distanz1 = erdradius *(Math.acos(Math.cos(i)*Math.cos(j)*Math.cos(i+1)*Math.cos(j+1)+
	            		Math.cos(i)*Math.sin(j)*Math.cos(i+1)*Math.sin(j+1)+Math.sin(i)*Math.sin(i+1)));
	            distanzMatrix[1][1] = distanz1;
	            distanzMatrix[j][i] = distanz1;
	        }
	    }
	    return distanzMatrix;
	}	
	//Methode zur Ausgabe der Distanz
	public static void printdistanz (double [][] distanzMatrix)
	{
		for (int i = 0; i<distanzMatrix.length;i++)
		{
			for (int j = 0; j <distanzMatrix[i].length; j++)
			{
				System.out.print(distanzMatrix[i][j]);
				System.out.print(" ");
			}
		}
	}
}

so alles erledigt, es gibt jetzt nur noch einen fehler in der berechnung...leider noch nicht gefunden, vll kann sich es mal einer anschauen. würde mich freuen. wenn ich natürlich ne lösung vorher finde, melde ich mich hier nochma. würde mich auf nachrichten freuen. danke
 
Zuletzt bearbeitet:

diggaa1984

Top Contributor
Ich sehe nicht, dass du den tipp von mir umgesetzt hast bei der Berechnung. Wenn in dem koordinaten-Array immer Längengrad und Breitengrad wie angenommen vorhanden sind dann muss die Berechnung mit dem Code, der meinem ja nachempfunden ist, auch das berücksichtigen:

Java:
 //Berechnung mit koordinaten[i][0] = Laenge / koordinaten[i][1] = Breite und
//koordinaten[j][0] = Laenge / koordinaten[j][1] = Breite
double distanz = formel; 

distanzMatrix[i][j] = distanz; //hier nicht 1 und 1 sondern i und j als parameter des Arrays!
distanzMatrix[j][i] = distanz; //Symmetrie

An den Kommentar über "distanz" musst dich schon halten.
Die i-Schleife iteriert über alle vorhandenen Orte. Die j-Schleife über alle Orte die dem von i referenzierten noch folgen. Beide Schleifen berechnen also die rechte obere Dreiecksmatrix der Distanzmatrix. Der Rest wird durch die Symmetrie gefüllt.

Da du in dem koordinaten Array an jedem Eintrag koordinaten genau 2 Werte bestitzt musst du eben mit [0], [1], [j][0] und [j][1] arbeiten und nicht mit i+1 oder j+1 und dergleichen. Ich habe jetzt die Formel nicht vor Augen wie sie korrekt aussieht und werde sie mir auch nicht anschauen, das musst selber korrigieren ;)

Aber ich hoffe du verstehst was der Kommentar da oben aussagt, und warum! Das ist nur ne Frage wie die 2 Schleifen arbeiten und welche Werte du mit i und j eigentlich aus dem Koordinaten-Array auslesen kannst.
 

tomtom88271

Mitglied
danke erstmal.

die formel stimmt zu 100 % und muss in java mit double werten gefüllt werden.
das heisst man benötigt längengrad1/breitengrad1 und längengrad2/breitengrad2. und genau da hab ich meine denkblockade, weil ich einfach nicht weiss, wie ich mit j und j machen soll, damit das programm weiss, achtung jez kommt längengrad2...vll steh ich am schlauch, ich weiss es nicht
 

diggaa1984

Top Contributor
ja na ich hatte angenommen das wäre dann klar :)

[0] Längengrad erste Stadt
[1] Breitengrad erste Stadt

[j][0] Längengrad zweite Stadt
[j][1] Breitengrad zweite Stadt

Wenn beim Einlesen erst Längen- und dann Breitengrad eingetippt werden. So sollte das nach meinem Verständnis klappen.

EDIT:
Java:
for (int j = 0; j < koordinate.length; j++) {
    System.out.println("Long:" + koordinate[j][0] + " Lat:" + koordinate[j][1]);
}
Das sollte auch so gehen, ohne 2. Schleife.
 
Zuletzt bearbeitet:

tomtom88271

Mitglied
Java:
	for (int i=0; i<ort.length; i++)
		{
			for (int j = 0; j<ort[i].length-1;j++)
			{
				ort[i][0] = StdInput.readDouble ("Längengrad erste Stadt");
				ort[i][1] = StdInput.readDouble ("Breitengrad erste Stadt");

				ort[j][0] = StdInput.readDouble ("Längengrad zweite Stadt");
				ort[j][1] = StdInput.readDouble ("Breitengrad zweite Stadt");
			}
		}

erfolgreich geändert, ABER er lässt jez öfter durchlaufen, das heisst obwohl ich n und x mit 2 per console derklariere, fragt er öfters ab nach längundbreitgrad
 

diggaa1984

Top Contributor
ne das Einlesen ist ok, du musst mit diesen array-Angaben bei deiner Formel arbeiten!

Java:
double distanz1 = erdradius *(Math.acos(Math.cos(i)*Math.cos(j)*Math.cos(i+1)*Math.cos(j+1)+
                        Math.cos(i)*Math.sin(j)*Math.cos(i+1)*Math.sin(j+1)+Math.sin(i)*Math.sin(i+1)));
hier musst du dich auf distanz[0], distanz[1], distanz[j][0] und distanz[j][1] beziehen, je nachdem wo da was reinkommt in der Formel.
 
Zuletzt bearbeitet:

tomtom88271

Mitglied
breitengrad steht ja quasi immer in der ersten spalte bei n zeilen...muss ich dann nicht fü längengrad2 oder breitengrad2, i+2 in die klammern nehmen ?! ich verstehs ned...tut ma leid

die formel heisst ausgeschrieben

Java:
formel = double d = Math.acos(Math.cos(längengrad1) * Math.cos(breitengrad1) * Math.cos(längengrad2)	* Math.cos(breitengrad2) +
 Math.cos(längengrad1) * Math.sin(breitengrad1) * Math.cos(längengrad2)	* Math.sin(breitengrad2) + Math.sin(längengrad1) * Math.sin(längengrad2));
 
Zuletzt bearbeitet:

diggaa1984

Top Contributor
angenommen wir haben sowas an koordinaten (nach dem Einlesen):
Code:
ORT Länge Breite (wobei Ort net im Array abgelegt ist)
A    1 | 1
B    2 | 2
C    5 | 5

=> geht als Parameter in die distanz-Methode

dann kommt nun die distanz-Methode zum Berechnen der Distanzmatrix (Parameter: double[][]distanz):
Java:
//formel ist jetzt mal gaaaaanz simpel und nicht mit deiner zu vergleichen, zeigt aber
//das arbeiten mit dem Paramter distanz, den du ja auch hast

for(int i=0; i<3; i++) {
    distanzMatrix[i][i] = 0; //Reflexivitaet
    
    for(int j=i+1; j<3; j++) {
        double distanz = (distanz[j][0]-distanz[i][0]) + (distanz[j][1]-distanz[i][1]);
        distanzMatrix[i][j] = distanz;
        distanzMatrix[j][i] = distanz; //Symmertrie
    }
}
Nun gehe mal diese Schleife mit Stift und Papier durch, dann verstehst vielleicht besser wie das funktioniert.
Code:
was kommt nun in die Distanzmatrix?!

    A   B   C
A
B
C
 
Zuletzt bearbeitet:

tomtom88271

Mitglied
Java:
(.....Math.cos([i][0]).....

normalerweise müsste ich das schreiben...denk ich mal...dann greift er auf die i-te zeile zu und auf die 0 spalte..seh ich ja richtig oder ?
soo, aber er nimmt halt nur normale double werte und keine double [][]arrays .... ich hatte zuerst gedacht ich muss es
Java:
(Math.cos(anzahlOrte[i][0])
so schreiben, aber da meint er auch das is falsch..naja
 

diggaa1984

Top Contributor
ich hatte zuerst gedacht ich muss es
Java:
(Math.cos(anzahlOrte[i][0])
so schreiben, aber da meint er auch das is falsch..naja

:D du hast schon soviel Code geschrieben, da stellst dich aber grad ganz schön an. Ist ja gar nich doof gedacht, nur was ist anzahlOrte denn!? Nen simples int, du musst mit dem Parameter distanz arbeiten, da stehen doch die Koordinaten drin, welche du zum Berechnen benötigst:

Java:
(Math.cos(distanz[i][0])
Das sollte nun die Probleme lösen!?

lauter nullen(0) oder ned..

man hat doch (1-1)+(2-2) usw

das steht
Code:
int j=i+1
.. somit ist j dem i immer mind. eine Zeile in deinem Koordinaten-Array vorraus

=>
i steht auf A ... j läuft für B und C
i steht auf B ... j läuft für C
i steht auf C ... j läut gar nicht
 
Zuletzt bearbeitet:

tomtom88271

Mitglied
Java:
double distanz1 = erdradius *Math.acos(Math.cos(distanz[i][0]) * Math.cos(distanz[i][1]) * Math.cos(distanz[j][0])
						* Math.cos(distanz[j][1]) + Math.cos(distanz[i][0]) * Math.sin(distanz[j][0]) * Math.cos(distanz[i][1])
						* Math.sin(distanz[j][1]) + Math.sin(distanz[i][0]) * Math.sin(distanz[i][1]));

sag das es richtig is :))
 

diggaa1984

Top Contributor
das kann dir nur die Ausgabe sagen, aber nach meinem Verständnis wäre das nun korrekt, wenn du dich bei den i's und j's und 0en und 1en nicht vertan hast ^^
 

tomtom88271

Mitglied
chef(!), eins noch

ich hab grade in der ausgabe gesehen, dass er mir ein paar mal zu oft nach längengrad erste stadt und breitengrad erste stadt usw..fragt..woran liegt das jez wieder ? sind 16 mal also hängt es damit zusammen:

Java:
	double [][] ort = new double [l][b];
		for (int i=0; i<ort.length; i++)
		{
			for (int j = 0; j<ort[i].length;j++)
			{
				ort[i][0] = StdInput.readDouble ("Längengrad erste Stadt");
				ort[i][1] = StdInput.readDouble ("Breitengrad erste Stadt");

				ort[j][0] = StdInput.readDouble ("Längengrad zweite Stadt");
				ort[j][1] = StdInput.readDouble ("Breitengrad zweite Stadt");
			}
		}
 

diggaa1984

Top Contributor
wie oft läuft i, wie oft läuft j?! Diese Änderung war ja eh nicht beabsichtigt von mir, das was du vorher hattest war ja funktional ;) Da reicht auch eine einzige Schleife um das umzusetzen.
 

tomtom88271

Mitglied
Java:
int n = StdInput.readInt("Zeilengröße: ");
		int x = StdInput.readInt("Spaltengröße: ");

über die 2 kann ich es steuern..ich hab für beide, also n und x jeweils 2 eingeben

er hat mir aber 16 ausgegeben, also 16 mal hat mich nach läng und breit gefragt
 

diggaa1984

Top Contributor
jaja, das glaub ich dir :) .. die Frage an dich, ist ja nun warum. Beantworte mal wie oft i und j [STRIKE]tatsächlich[/STRIKE] laufen. Zettel Stift?!
 

diggaa1984

Top Contributor
genau, nu kannt dir aussuchen:
  • statt 4 Abfragen eine machen´
  • oder besser .. alles mit einer einzigen Schleife lösen, was auch verständlicher sein wird (meine Empfehlung :))
 

tomtom88271

Mitglied
jetzt gehts aber los hier :D

alles klar. lass mich ma überlegen, ob des alles hinbekomm, brauch zwar nur eins, dennoch..schauen wir ma
- 4 abfragen .. kein problem
Java:
ort [i][j] = StdInput.readDouble("Längengrad/Breitengrad ");
- Schleifendurchläufe anpassen..ähm.
Java:
double [][] ort = new double [l][b];
		for (int i=0; i<1; i++)
		{
			for (int j = 1; j<2;j++)
			{
				
				
				ort[i][0] = StdInput.readDouble ("Längengrad erste Stadt");
				ort[i][1] = StdInput.readDouble ("Breitengrad erste Stadt");

				ort[j][0] = StdInput.readDouble ("Längengrad zweite Stadt");
				ort[j][1] = StdInput.readDouble ("Breitengrad zweite Stadt");
quasi so
und das letzte
- mit einer einzigen ?

Java:
	for (int i=0, j=1; j<ort.length; j++, i++)
		{
				ort[i][0] = StdInput.readDouble ("Längengrad erste Stadt");
				ort[i][1] = StdInput.readDouble ("Breitengrad erste Stadt");

				ort[j][0] = StdInput.readDouble ("Längengrad zweite Stadt");
				ort[j][1] = StdInput.readDouble ("Breitengrad zweite Stadt");
			
		}
soo ?
 
Zuletzt bearbeitet:

diggaa1984

Top Contributor
aha, das mit den schleifendurchläufen kannst knicken, das war knoten im kopp meinerseits, geht bestimmt auch aber wäre rein logisch gesehen überhaupt nicht sinnvoll so an das problem ranzugehen :D

zum letzten punkt:
Java:
for (int i=0; i<ort.length; i++) {
    ort[i][0] = StdInput.readDouble ("Längengrad der Stadt");
    ort[i][1] = StdInput.readDouble ("Breitengrad der Stadt");
}

besser? J fällt komplett weg.
 

tomtom88271

Mitglied
Java:
for (int i=0; i<ort.length; i++) {
    ort[i][0] = StdInput.readDouble ("Längengrad Stadt");
    ort[i][1] = StdInput.readDouble ("Breitengrad Stadt");
}
"erste" muss halt dann noch raus, sonst verwirrung

also ich muss sagen, hab gut viel gelernt und bedankee mich ziemlichhhhhh bei dir!!!!!!!
 

Neue Themen


Oben