Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
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:
public class Array {
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.
}
}
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;
public class Foo{
public Foo(){
}
public int range(int[]r){
int erg = 0;
if(r[0]<r[1]){
erg = r[1]-r[0];
}
else if(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
}
public static void main(String[]args){
new Foo().range(new int[]{10,15});
}
}
package versuche;
public class Foo{
int[] number = {90,30};
public Foo(){
}
public int range(int[]r){
int result =0;;
if(r[0]<r[1]){
result = r[1]-r[0];
}
else if(r[0]>r[1]){
result = r[0]-r[1];
}
return result; // result wird zurückgegeben
}
public void rechnen(){
int erg = 44 + range(number); // enthält den errechneten rückgabewert und addiert 44 dazu
System.out.println(erg); // gibt das ergebnis aus
}
public static void main(String[]args){
new Foo().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;
public class Foo{
static int[] same = {45,45};
boolean erg;
public Foo(){
}
public boolean containsDuplicates(int[] a) {
if(a[0] == a[1]){
return true;
}
else{
return false;
}
}
public void print(){
erg = containsDuplicates(same);
System.out.println(erg);
}
public static void main(String[]args){
new Foo().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:
public class Array {
public int range(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!
public class Array {
public int range(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 Array
int max = a[0]; // initialwert ist der erste Wert im Array
for (int a = 0; a < a.length; a++) { // Arrays starten bei 0 und gehen bis (inklusive) länge-1
if (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;
public class Foo{
int min,max;
int[] num;
public Foo(){
num = new int[]{45,54,88,662,668,454,456,888}; // willkürlich gewählte zahlen
compare(num); // <<-- Compare Methode aufrufen und ihr das Array Übergeben
System.out.println(max);
System.out.println(min);
System.out.println(max - min);
}
public void compare(int[]a){
min = num[0]; // num den ersten Wert in deinem Array Zuweisen ! WICHTIG
for(int i=1;i<a.length;i++){
//Findet den größten Wert in deinem Array
if(a[i] > max){
max = a[i];
}
//Findet den kleinsten Wert in deinem Array
if(a[i] < min){
min = a[i];
}
}
}
public static void main(String[]args){
new Foo();
}
}
//Ausgabe ist folgende
888 //max
45 //min
843 //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:
public class Array{
public int range(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];
}
else if( a[0] > a[1] ){
erg = a[0]-a[1];
}
return erg;
}
public boolean containsDuplicates(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...