Guten Tag,
meine Aufgabenstellung lautet zu überprüfen ob die Werte im folgenden Array paarweise verschieden sind:
int[] arr = { 5, 6, 7, 10, 13, 24, 233 }; (sprich insgesamt 7 Werte)
Ich habe mir gedacht ich bilde eine doppelte for Schleife um das ganze Array mal zu durchlaufen und definiere einen Kontrollwert. Sollte es 2 gleiche Zahlen im Array geben erhöhe ich den Kontrollwertt um 1, sprich bleibt der Kontrollwert bei 0 ist das Array paarweise verschieden, ist es >=1 dann halt nicht. Der Code sieht folgendermaßen aus:
Der Gedankengang dahinter war:
Zuerst prüfe ich a[0]==a[0+1=1],a[0]==a[0+1+1=2], etc., danach a[1]==a[1+1=2],a[1]==a[1+1+1=3],etc.
Deshalb habe ich auch c=b+1 definiert um die Prüfung des Arraywertes mit sich selber sowie doppelte Prüfungen (also quasi spiegelverkehrte) zu vermeiden. Wenn ich das doppelte Schleifenprinzip richtig verstanden habe würde dies bedeuten, dass für a[0] quasi 6 mal geprüft wird, für a[1) dann 5 mal, usw. Dies macht ja auch für alle Arraywerte Sinn und die Aufgabenstellung konnte ich auch lösen. Nur meine Frage bezieht sich auf folgendes:
Wenn die äußere(!) Schleife bei a[6] angelangt ist müsste doch eigentlich a[6]==a[6+1=7] geprüft werden, was dann schlussendlich einen Error ausgeben müsste da a[7] ja nicht existiert. Wird dies lediglich nicht durchgeführt weil c<arr.length() definiert ist, die Bedingung der 2. Schleife also quasi "stärker" ist als die definierte Zählvariable (c=b+1)?
Vielen Dank
meine Aufgabenstellung lautet zu überprüfen ob die Werte im folgenden Array paarweise verschieden sind:
int[] arr = { 5, 6, 7, 10, 13, 24, 233 }; (sprich insgesamt 7 Werte)
Ich habe mir gedacht ich bilde eine doppelte for Schleife um das ganze Array mal zu durchlaufen und definiere einen Kontrollwert. Sollte es 2 gleiche Zahlen im Array geben erhöhe ich den Kontrollwertt um 1, sprich bleibt der Kontrollwert bei 0 ist das Array paarweise verschieden, ist es >=1 dann halt nicht. Der Code sieht folgendermaßen aus:
Java:
int kontrollwert= 0;
for (int b=0; b<arr.length;b++) {
for (int c=b+1; c<arr.length;c++) {
if (arr==arr[c]) {
kontrollwert +=1;
}
}
}
System.out.println(kontrollwert);
Der Gedankengang dahinter war:
Zuerst prüfe ich a[0]==a[0+1=1],a[0]==a[0+1+1=2], etc., danach a[1]==a[1+1=2],a[1]==a[1+1+1=3],etc.
Deshalb habe ich auch c=b+1 definiert um die Prüfung des Arraywertes mit sich selber sowie doppelte Prüfungen (also quasi spiegelverkehrte) zu vermeiden. Wenn ich das doppelte Schleifenprinzip richtig verstanden habe würde dies bedeuten, dass für a[0] quasi 6 mal geprüft wird, für a[1) dann 5 mal, usw. Dies macht ja auch für alle Arraywerte Sinn und die Aufgabenstellung konnte ich auch lösen. Nur meine Frage bezieht sich auf folgendes:
Wenn die äußere(!) Schleife bei a[6] angelangt ist müsste doch eigentlich a[6]==a[6+1=7] geprüft werden, was dann schlussendlich einen Error ausgeben müsste da a[7] ja nicht existiert. Wird dies lediglich nicht durchgeführt weil c<arr.length() definiert ist, die Bedingung der 2. Schleife also quasi "stärker" ist als die definierte Zählvariable (c=b+1)?
Vielen Dank
Zuletzt bearbeitet: