D
DanTheMan12
Gast
hi,
da ich nichts passendes finde (weder hier noch sonstewo), versuche ich mir mal Rat von Könnern und Kennern zu holen.
Folgende Problemstellung liegt mir vor:
Schreiben Sie eine Klasse ArrayOperation und implementieren Sie folgende statische Methode:
Eine Methode int plateau(int[] a), die in einem Array von absteigend sortierten ganzen Zahlen das längste Plateau berechnet und als Ergebnis zurückgibt. Der Array a soll dabei aber nur einmal durchlaufen werden.
Hinweis: Ein Plateau ist eine Folge von gleichen Werten. Für den Array a = {8, 8, 7, 4, 4, 3, 3, 3, 3, 2, 2, 2, 1} soll die Methode das Ergebnis 4 liefern.
Erweitern Sie die Klasse um die main-Methode und testen Sie die Methoden, indem Sie ein Array erzeugen und für dieses die Methoden aufrufen.
Meine Probleme stehen als Kommentare im Quelltext.
Vielen Dank schon mal für Antworten
da ich nichts passendes finde (weder hier noch sonstewo), versuche ich mir mal Rat von Könnern und Kennern zu holen.
Folgende Problemstellung liegt mir vor:
Schreiben Sie eine Klasse ArrayOperation und implementieren Sie folgende statische Methode:
Eine Methode int plateau(int[] a), die in einem Array von absteigend sortierten ganzen Zahlen das längste Plateau berechnet und als Ergebnis zurückgibt. Der Array a soll dabei aber nur einmal durchlaufen werden.
Hinweis: Ein Plateau ist eine Folge von gleichen Werten. Für den Array a = {8, 8, 7, 4, 4, 3, 3, 3, 3, 2, 2, 2, 1} soll die Methode das Ergebnis 4 liefern.
Erweitern Sie die Klasse um die main-Methode und testen Sie die Methoden, indem Sie ein Array erzeugen und für dieses die Methoden aufrufen.
Java:
public class ArrayOperation {
public static void main (String [] arg) {
int[] array3 = {8, 8, 7, 4, 4, 3, 3, 3, 3, 2, 2, 2, 1};
System.out.print("plataeu (array3): ");
plateau(array3);
} // main
static int[] plateau (int[] a) {
int zaehler = 0; // zaehler zaehlt die Durchlaeufe bei einer gleichen Zahl
int aktuellerWert = a[0]; // aktuellerWert wird auf den ersten Wert des Arrays gesetzt
for (int i = 0; i < a.length; i++) {
int neuerWert = a[i]; // im ersten Durchlauf sind neuerWert und aktueller Wert identisch
if (neuerWert < aktuellerWert) { // da die Zahlen absteigend sind
// hier muesste der Zaehler auf 0 gesetzt werden, aber der vorige Wert von zaehler muesste zwischengespeichert werden, damit er zur Verfügung steht, falls keine laengere Ebene mehr kommt
continue;
} else if (neuerWert == aktuellerWert) {
zaehler += 1; // soll die Durchlaeufe zaehlen
}
aktuellerWert = a[i]; // aktueller Wert wird wieder auf i gesetzt
}
System.out.print(zaehler); // das hier kann noch nicht stimmen, da ich den MAX-Wert von zaehler ausgeben muesste
return a; // was ich als return zurueckgeben soll, weiß ich auch noch nicht so ganz
} // plateau
} // ArrayOperation
Meine Probleme stehen als Kommentare im Quelltext.
Vielen Dank schon mal für Antworten