Die Aufgabe lautet:
Implementieren Sie die Methoden range und containsDuplicates der Klasse Array.
- range gibt die Diefferenz des größten und kleinsten Elements des übergebenen Ar-
rays zuruck.
- containsDuplicates gibt true zuruck, falls in dem übergebenen Array mindestens
eine Zahl mindestens doppelt vorkommt, false anderenfalls.
Java:
publicclassArray{publicintrange(int[] a){// Gibt die Differenz des großten und kleinsten// Elements des Arrays zurück.}publicbooleancontainsDuplicates(int[] a){// Gibt true zurück, falls in dem Array mindestens// eine Zahl mindestens doppelt vorkommt, false// anderenfalls.}}
Meine Fragen;
1)Wie mache ich eine Subtraktion in Arrays?
2)Puplic boolean containsDuplicates wie heißen da die befehle? Hatte diese aussage noch nie!
ich glaube so in der art sollte das klappen , insofern nur du die anzahl der hinzugefügten Werte kennst
Java:
package versuche;publicclassFoo{publicFoo(){}publicintrange(int[]r){int erg =0;if(r[0]<r[1]){
erg = r[1]-r[0];}elseif(r[0]>r[1]){
erg = r[0]-r[1];}System.out.print(erg);return erg;// <<---gibt den restwert nach der Berechnung zurück , wird hier allerdings nicht verwendet deswegen auch das sysout darüber}publicstaticvoidmain(String[]args){newFoo().range(newint[]{10,15});}}
package versuche;publicclassFoo{int[] number ={90,30};publicFoo(){}publicintrange(int[]r){int result =0;;if(r[0]<r[1]){
result = r[1]-r[0];}elseif(r[0]>r[1]){
result = r[0]-r[1];}return result;// result wird zurückgegeben}publicvoidrechnen(){int erg =44+range(number);// enthält den errechneten rückgabewert und addiert 44 dazuSystem.out.println(erg);// gibt das ergebnis aus }publicstaticvoidmain(String[]args){newFoo().rechnen();}}
Das ist sehr einfach gehalten , wenn es weiter in die materie geht gibt es Comperatoren um z.B mehrere Arrays miteinander zu vergleichen , aber das war ja hier nicht die Frage :
2 werte in einem Array vergleichen
Java:
package versuche;publicclassFoo{staticint[] same ={45,45};boolean erg;publicFoo(){}publicbooleancontainsDuplicates(int[] a){if(a[0]== a[1]){returntrue;}else{returnfalse;}}publicvoidprint(){
erg =containsDuplicates(same);System.out.println(erg);}publicstaticvoidmain(String[]args){newFoo().print();}}Ausgabe:true
Also die einzige Aussage die ich nicht mit dazu geschrieben habe ist:
Sie können davon ausgehen, dass alle Felder der übergebenen Arrays mit int-Werten
besetzt sind.
Aber kann man davon die länge des Arrays bestimmen?
erhälst du die länge des Arrays als int Wert,ich wüsste jetzt nicht wie du alle Werte eines Arrays verlgeichen könntest , wenn du deren länge nicht kennst , da ja das initialisierte Array immer eine Feste länge hat.
public int range(int[] a) {
// Gibt die Differenz des großten und kleinsten
// Elements des Arrays zurück.
}
public boolean containsDuplicates(int[] a) {
// Gibt true zurück, falls in dem Array mindestens
// eine Zahl mindestens doppelt vorkommt, false
// anderenfalls.
}
}
[/code]
Meine Fragen;
1)Wie mache ich eine Subtraktion in Arrays?
2)Puplic boolean containsDuplicates wie heißen da die befehle? Hatte diese aussage noch nie!
Also ich wundere mich, dass eine so simple Aufgabe nicht mehr Feedback erhält.
zu deiner range Methode:
Du musst doch nur über das Array iterieren (for-Schleife nutzen) und dann 2 Integer speichern: int min, das momentane Minimum und int max, das momentane Maximum. Du gehst dann über jeden Wert im Array und schaust, ob er größer als max ist oder kleiner als min. Achtung: Dabei darfst du natürlich nicht min und max mit 0 initialisieren, sondern nimmst am besten den ersten Wert des Arrays als min und max.
Zu der contains Methode:
Simpler weg: 2 Schleifen, verschachtelt. Für jeden Wert gucken, ob er gleich mit einem anderen Wert im Array ist. Hierbei natürlich nicht den Wert an der selben Stelle mit sich selbst vergleichen.
Hallo,
das Prinzip was ich machen soll habe ich verstanden allerdings kann ich diesen Schritt nicht in programmier Sprache übersetzen!
Ich habe erstmal das hier Versucht;
Java:
publicclassArray{publicintrange(int[] a){// Gibt die Differenz des größten und kleinsten// Elements des Arrays zurück.int min;int max;for(int a =1; a < min , a > max; a++){}}}
sieht für mich allerdings alles andere als richtig aus!
publicclassArray{publicintrange(int[] a){// Gibt die Differenz des größten und kleinsten// Elements des Arrays zurück.int min = a[0];// initialwert ist der erste Wert im Arrayint max = a[0];// initialwert ist der erste Wert im Arrayfor(int a =0; a < a.length; a++){// Arrays starten bei 0 und gehen bis (inklusive) länge-1if(wert an der stelle i ist größer als max){
setze max auf den wert an der stelle i}if(wert an der stelle i ist kleiner als min){
setze min auf den wert an der stelle i}}}}
Hilft es, wenn man es so aufschreibt? Kannst du es s denn umsetzen?
package versuche;publicclassFoo{int min,max;int[] num;publicFoo(){
num =newint[]{45,54,88,662,668,454,456,888};// willkürlich gewählte zahlen compare(num);// <<-- Compare Methode aufrufen und ihr das Array ÜbergebenSystem.out.println(max);System.out.println(min);System.out.println(max - min);}publicvoidcompare(int[]a){
min = num[0];// num den ersten Wert in deinem Array Zuweisen ! WICHTIGfor(int i=1;i<a.length;i++){//Findet den größten Wert in deinem Arrayif(a[i]> max){
max = a[i];}//Findet den kleinsten Wert in deinem Arrayif(a[i]< min){
min = a[i];}}}publicstaticvoidmain(String[]args){newFoo();}}//Ausgabe ist folgende 888//max 45//min843//max - min
Mir hat sowas immer geholfen , wenn ich eine Vollständige / Pseudo Code lösung gesehen habe , als ich am schreiben war hab ich noch nicht mitbekommen das du schon eine Pseudo Code lösung gepostet hast, auf grundlage unserer Antworten kann er aber nun versuchen eine Lösung für sein 2tes Problem das vergleichen von Werten zu erstellen
Vielen vielen dank euch beiden!
Sowohl die Lösung als auch die Stütze haben mir extrem geholfen!
Am Ende sieht mein Programm so aus;
Java:
publicclassArray{publicintrange(int[] a){// Gibt die Differenz des größten und kleinsten// Elements des Arrays zurück.int erg =0;if( a[0]< a[1]){
erg = a[1]-a[0];}elseif( a[0]> a[1]){
erg = a[0]-a[1];}return erg;}publicbooleancontainsDuplicates(int[] a){// Gibt true zurück, falls in dem Array mindestens// eine Zahl mindestens doppelt vorkommt, false// anderenfalls.int min = a[0];// int max = a[0];for(int i =0; i < a.length; i++){if(i > max){
max = a[i];}if(i < min){
min = a[i];}}}}
Also das erste was mir auffällt:
Deine containsDuplicates Methode berechnet das min und das max in deinem Array. Das sollte sie aber gar nicht machen.
Deine range Methode betrachtet nur die ersten zwei Einträge des Arrays und berechnet die Differenz. Du willst aber max - min des Arrays errechnen.
??? macht doch keinen sinn, wenn mehr als zwei werte drinnen sind.
wurde gesagt, dass das array nur aus zwei werten besteht.
Mach einfach eine Methode die dir das Maximum sucht und eines das dir das Minimum sucht und verwende dann diese beiden Methoden.
Maximum suchen.. usw sollte machbar sein...