Instanzmethoden

javaNewbie!

Mitglied
Hallo an alle,
ich bin ein ziemlicher anfänger was OOP angeht und habe nun eine frage zu instanzmethoden.
Ich habe nun eine Klasse DataVector und möchte auf Instanzen dieser eine Methode aufrufen, die mir die position des elementes, welches das argument der methode ist, ausgibt.
Also bspw. sei p eine Instanz von DataVector, dann soll der aufruf
Java:
p.getPosition(4)
mir die Stelle der Zahl 4 in dem array p ausgeben. Dabei ist mein Problem nicht das finden des elementes sondern, wie ich das mit der instanz regeln kann.

ich hoffe ihr könnt mir helfen, weder bei google noch in meinem java buch habe ich dazu etwas gefunden.
viele Grüße
 

javimka

Top Contributor
Bin mir nicht ganz sicher, was du mit "der Inszanz" meinst. Vielleicht sowas?
Java:
DataVector p = new DataVector(...);
int position = p.getPosition(4); // Speichere den Ort von 4 nach position
 

javaNewbie!

Mitglied
hallo javimka,
genau so meine ich es. der vorschlag von final striker wird ja aufgerufen mit der position und gibt mir das element zurück. ich möchte aber eine methode, der ich das element übergebe und diese mir die stelle ausgibt.
mein problem ist jetzt nur dass ich eine implementierung dieser getPosition methode versuche hinzubekommen...
das ziel dieser überlegungen ist es eine methode zu schreiben, die mir zu jedem element eines den rang zurückgibt. Also bspw. übergebe ich
Java:
{12,11,15,2}
und erhalte entsprechend
Java:
{3,2,4,1}
ich hab nur eine solche methode bisher nicht gefunden, und will sie mir deshalb selber schreiben.

grüße
 

javimka

Top Contributor
Achso, ich dachte, das funktioniere bereits. Das sollte funktionieren, wenn array dein int[] array ist:
Java:
public int getPosition(int val) {
  for (int i=0;i<array.length;i++) {
    if (val==array[i]) return i;
  }
  return 0; // Falls val im Array nicht gefunden wurde
}
 

Painii

Bekanntes Mitglied
Achso, ich dachte, das funktioniere bereits. Das sollte funktionieren, wenn array dein int[] array ist:
Java:
public int getPosition(int val) {
  for (int i=0;i<array.length;i++) {
    if (val==array[i]) return i;
  }
  return 0; // Falls val im Array nicht gefunden wurde
}
0 ist hier eine sehr schlechte Wahl weil die ja durchaus eine valide Position im array ist.
Entweder [c]return -1;[/c] oder eine Exception...
 

mvitz

Top Contributor
Und für mehrere Werte, könnte man eine Methode:

Java:
public int[] getPositions(int[] values) {
  int[] result = new int[values.length];
  for(int i = 0; i < values.length; i++) {
    result[i] = getPosition(values[i]);
  }
  return result;
}

benutzen. (Basiert natürlich auf der Methode von javimka)
 

faetzminator

Gesperrter Benutzer
Und für mehrere Werte, könnte man eine Methode:

Java:
public int[] getPositions(int[] values) {
  int[] result = new int[values.length];
  for(int i = 0; i < values.length; i++) {
    result[i] = getPosition(values[i]);
  }
  return result;
}

benutzen. (Basiert natürlich auf der Methode von javimka)

Hier sei einfach zu beachten, dass die Worst Case Laufzeit [c]O(n * m)[/c] beträgt, wobei n die Anzahl übergebenen Elemente und m die Anzahl Elemente im Array sind. Falls dies keine Schulaufgabe ist, sollte man über andere Datenstrukturen nachdenken.
 

Ähnliche Java Themen

Neue Themen


Oben