Plateau auslesen und längste Ebene ausgeben

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.

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
 

Michael...

Top Contributor
[JAVA=18]// 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[/code]
Werte und auch Zwischenwert speichert man ............... in Variablen ;-) Du benötigst einfach eine zusätzliche Variable die den bisher höchsten ermittelten Wert speichert.

Und zaehler muss an dieser Stelle auf 1 gesetzt werden
 
D

DanTheMan12

Gast
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 = 1;                      // 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
            }
	if (zaehler > hoechsterWert) {
		hoechsterWert = zaehler;
	}
            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

meinst du das so? also ich denke die Zwischenspeicherung sollte so funktionieren, allerdings zählt das Programm bisher nur die ersten zwei Zahlen glaube ich, da das Ergebnis "2" ist.
 
D

DanTheMan12

Gast
so hier ist meine aktuelle Version die soweit auch funktioniert, allerdings spuckt sie noch die falsche Zahl aus. Das Ergebniss müsste 4 sein, ist aber momentan 3. Ich verstehe einfach bisher noch nicht wieso zaehler auf 1 gesetzt werden sollte. Könnte mir das jemand erklären?`Oder gibt es vielleicht einen anderen Fehler?

Java:
public class ArrayOperation2 {
	
	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 (muss doch bei 0 anfangen oder etwa nicht?)
		int aktuellerWert = a[0];				// aktuellerWert wird auf den ersten Wert des Arrays gesetzt (=8)
		int hoechsterZaehler = 0;
		for (int i = 0; i < a.length; i++) {
			int neuerWert = a[i];				// im ersten Durchlauf sind neuerWert und aktueller Wert identisch
			if (neuerWert == aktuellerWert) {			// wenn neuerWert gleich aktuellerWert dann:
				zaehler += 1;							// soll die Durchlaeufe zaehlen, pro wiederholte (gleiche) Zahl +1 dazuzaehlen
				if (zaehler > hoechsterZaehler) {		// wenn der aktuelle zaehler groeßer als der letzte hoechsterZaehler ist, dann:
					hoechsterZaehler = zaehler;			// hoechsterZaehler auf aktuelle zaehler setzen
				}
			} else if (neuerWert < aktuellerWert) {		// sonst: wenn neuerWert kleiner als aktuellerWert dann Schleifendurchlauf abbrechen und neuen Durchlauf beginnen
				aktuellerWert = a[i];					// sobald eine kleinerer Wert auftritt, wird auch hier der aktuelleWert auf i gesetzt
				zaehler = 0;							// zaehler wird auf 0 gesetzt (dann spuckt er aber 3 anstatt 4 aus) --> ich verstehe nicht wieso 3 und nicht 4
				continue;
			}
			aktuellerWert = a[i];						// aktuellerWert wird wieder auf i gesetzt (entsprechender Wert)
		}
		System.out.print(hoechsterZaehler);
		return a;								// beim return bin ich mir nicht sicher
	} // plateau
	
} // ArrayOperation2
 
D

DanTheMan12

Gast
ja danke dir - bin den Algorithmus schon auf dem Papier durchgegangen und da ist mir das auch aufgefallen :D

also der zaehler muss jeweils auf 1

Vielen Dank für deine Hilfe ;)


-Topic ist beantwortet-
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Plateau Prgramm schreiben Java Basics - Anfänger-Themen 2
S Daten aus Import Datei auslesen und sortieren Java Basics - Anfänger-Themen 2
T array auslesen Java Basics - Anfänger-Themen 2
I Klassen von einem package laden, Statisches Feld auslesen und Objekt erstellen Java Basics - Anfänger-Themen 8
N Einzelne Werte aus einem TreeSet auslesen Java Basics - Anfänger-Themen 2
D Eclipse will nicht auslesen Java Basics - Anfänger-Themen 6
E TIF Datei auslesen Java Basics - Anfänger-Themen 2
krgewb Breite und Höhe eines Bildes in base64 auslesen Java Basics - Anfänger-Themen 3
sserio TXT-Datei Auslesen und den Wert jedes Namen ausrechnen etc. Java Basics - Anfänger-Themen 37
J Speichern von zwei Variablen durch Auslesen aus einem Numberfield Java Basics - Anfänger-Themen 2
U Sekunden von LocalTime auslesen, wie möglich? Java Basics - Anfänger-Themen 1
E Outlook ordner auslesen Java Basics - Anfänger-Themen 4
R Eigenschaft über Parameter auslesen und ändern Java Basics - Anfänger-Themen 15
B Bin komplett am verzweifeln :( Verkettete Liste die Objekte hat Attribut auslesen Java Basics - Anfänger-Themen 14
J Datei aus Netzwerk auslesen Java Basics - Anfänger-Themen 9
J Jsonfile auslesen Java Basics - Anfänger-Themen 8
A Eine Textdatei auslesen Java Basics - Anfänger-Themen 16
N Aus einem String die Anzahl der Vokale auslesen Java Basics - Anfänger-Themen 40
H Array rückwärts auslesen funktioniert nicht Java Basics - Anfänger-Themen 3
J Bestimmte parameter aus Jsonfile auslesen Java Basics - Anfänger-Themen 15
AleXusher Mehrdimensionales Array aus txt.file auslesen Java Basics - Anfänger-Themen 4
L Zeichen an bestimmter Stelle auslesen Java Basics - Anfänger-Themen 4
3 Textdatei Zeilenweise auslesen Java Basics - Anfänger-Themen 3
J Json Datei auslesen Java Basics - Anfänger-Themen 4
I Java String einlesen und auslesen Java Basics - Anfänger-Themen 11
S Tastatureingabe auslesen und in Konsole ausgeben Java Basics - Anfänger-Themen 6
S CSV Datei auslesen und anders darstellen Java Basics - Anfänger-Themen 2
G Scanner nutzen und Index auslesen Java Basics - Anfänger-Themen 8
N JTable auslesen Java Basics - Anfänger-Themen 6
N Java CSV Datei auslesen Java Basics - Anfänger-Themen 6
F Webseiten Quelltext auslesen Java Basics - Anfänger-Themen 5
J Datei auslesen (nur bestimmte Stellen) Java Basics - Anfänger-Themen 2
I csv auslesen, mittels List Java Basics - Anfänger-Themen 18
S Letzte Zahl eines Integer auslesen? Java Basics - Anfänger-Themen 3
G If / While Programm (Datei auslesen) Java Basics - Anfänger-Themen 6
S Aus einer .bz2 Datei auslesen Java Basics - Anfänger-Themen 2
K Textdatei auslesen und über Mqtt schicken Java Basics - Anfänger-Themen 4
B Name von Verzeichnis bekommen - Files von einem Ordner auslesen Java Basics - Anfänger-Themen 4
A Daten auslesen/vergleichen Java Basics - Anfänger-Themen 3
D XML von Seite auslesen Jsoup Java Basics - Anfänger-Themen 2
I Druckerauflösung auslesen - mittlerweile möglich? Java Basics - Anfänger-Themen 4
B WSDL auslesen? Java Basics - Anfänger-Themen 8
D Methoden Textdokument erstellen und auslesen. Java Basics - Anfänger-Themen 46
B HTML Code / Seite auslesen und JAVA Objekte erstellen Java Basics - Anfänger-Themen 12
S Datein auslesen und verarbeiten Java Basics - Anfänger-Themen 1
J Geld speichern und wieder auslesen Java Basics - Anfänger-Themen 10
S CSV auslesen UTF-8 Problem Java Basics - Anfänger-Themen 7
D Datei auslesen & Werte in Variable speichern Java Basics - Anfänger-Themen 12
K String buchstaben auslesen Java Basics - Anfänger-Themen 9
S Amazon Produktbeschreibung auslesen und nach Keywords suchen Java Basics - Anfänger-Themen 2
x-tshainge Interface Wie kann ich aus Textfeldern auslesen Java Basics - Anfänger-Themen 6
Z Ersten Buchstaben eines Elements eines String-Arrays auslesen Java Basics - Anfänger-Themen 5
B .txt. Datei auslesen und bestimmten Wert wiedergeben Java Basics - Anfänger-Themen 5
CptK x wert eines Bildes auslesen Java Basics - Anfänger-Themen 1
T Website auslesen Java Basics - Anfänger-Themen 2
T String auslesen bzw. überprüfen Java Basics - Anfänger-Themen 1
L CSV Auslesen Java Basics - Anfänger-Themen 5
B Auslesen von PDF / Bilder Java Basics - Anfänger-Themen 5
das_leon Alle Zeilen einer CSV-Datei auslesen Java Basics - Anfänger-Themen 1
D Mit Java HTML bzw Javascript auslesen Java Basics - Anfänger-Themen 1
F Arrays Sätze speichern und einzelne Worte mit Index Angabe auslesen Java Basics - Anfänger-Themen 4
F Zwischenwerte aus Browser auslesen Java Basics - Anfänger-Themen 19
S Jede Ziffer einer Zahl auslesen, damit rechnen und beim Ergebnis wiederholen ? Java Basics - Anfänger-Themen 20
G Servlet - externe HTML (URL) auslesen Java Basics - Anfänger-Themen 1
T class Datei auslesen Java Java Basics - Anfänger-Themen 5
P Liste auslesen und in Variablen speichern Java Basics - Anfänger-Themen 7
D String erste Zahl mit LKZ auslesen lassen Java Basics - Anfänger-Themen 36
J Hashmap auslesen Java Basics - Anfänger-Themen 7
J Auslesen/speichern und wieder einlesen Java Basics - Anfänger-Themen 7
D String untereinander auslesen lassen Java Basics - Anfänger-Themen 2
M Aus Datei auslesen und untersuchen ob diese Zeile schon vorhanden ist Java Basics - Anfänger-Themen 3
DaCrazyJavaExpert Variablen Zahlen aus Strings auslesen Java Basics - Anfänger-Themen 4
J Informationen aus Webseiten auslesen Java Basics - Anfänger-Themen 1
S Text aus einer HTML Datei auslesen Java Basics - Anfänger-Themen 1
M Einzelne Pixel in einem Bild auslesen und bearbeiten Java Basics - Anfänger-Themen 1
dragonfight86 Erste Schritte OpenDocument auslesen Java Basics - Anfänger-Themen 13
I Texte mit Absätzen in Dateien speichern und auslesen Java Basics - Anfänger-Themen 1
W DNS Name auslesen + weitere Anfängerfrage Java Basics - Anfänger-Themen 4
C Werte aus JTable auslesen Java Basics - Anfänger-Themen 4
Chrizzey45 Calc-Dokument in Java auslesen? Java Basics - Anfänger-Themen 2
B Datei auslesen und 2D-Array anlegen Java Basics - Anfänger-Themen 1
B Key auslesen/ausgeben innerhalb von foreach() Java Basics - Anfänger-Themen 5
M Eigenschaften einer Datei auslesen Java Basics - Anfänger-Themen 5
M Textarea auslesen und beschreiben Java Basics - Anfänger-Themen 8
JokerBlacky Klassen Klasse Queue Klasse mit Attributen anhängen und auslesen können Java Basics - Anfänger-Themen 4
Y Bildschirmauflösung auslesen Java Basics - Anfänger-Themen 4
S for schleife auslesen Java Basics - Anfänger-Themen 4
Voreck String Zeichen für Zeichen auslesen Java Basics - Anfänger-Themen 9
Voreck Array aus txt datei auslesen Java Basics - Anfänger-Themen 2
N JFreeChart --> TimeSeries auslesen Java Basics - Anfänger-Themen 9
OlafHD Datei Auslesen Java Basics - Anfänger-Themen 6
M Metadaten OpenOffice mit Java auslesen Java Basics - Anfänger-Themen 9
P JList, aus selectedValue bestimmten Wert aus Containerklasse auslesen Java Basics - Anfänger-Themen 4
J OpenOffice Dokumentenvariable mit Java auslesen Java Basics - Anfänger-Themen 1
P Daten von Internetseite auslesen Java Basics - Anfänger-Themen 10
L Text eingeben und im Textfeld auslesen lassen Java Basics - Anfänger-Themen 2
T Combobox Wert auslesen und damit weiterrechnen Java Basics - Anfänger-Themen 6
J Datei auslesen klappt nicht Java Basics - Anfänger-Themen 4
D String Zeichen für Zeichen auslesen Java Basics - Anfänger-Themen 5
Viktim Website auslesen Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben