Gleiche Elemente in Feld zählen

Greenhorn

Mitglied
Eine weitere Aufgabe bei der ich zur Klausurenvorbereitung heute nicht vollständig vorangekommen bin:

Schreiben Sie den Java-Code fur eine Methode
Java:
int maxEqual(int[] a)
, die
in einem Array von Integer-Zahlen feststellt, wieviele gleiche Zahlen maximal
in Folge vorkommen, und diese Anzahl zuruckgibt.

Beispiel: Fur das Array
Code:
{3, 4, 4, 5, 6, 8, 0, 0, 0, 0, 88, 88, 0}
ware das
Ergebnis 4.

Bei meinem Lösungsversuch fehlt mir eine Idee wie ich einen Zwischenspeicher einfüge und später zwei der größten Läufe miteinander vergleiche, wobei nur der Größte zurückgegeben wird:

Java:
int maxEqual (int [] a){
  zaehler=1;
  max=0;
  max2=0;

  for(int i=0; i<a.length;i++){
    if(a[i] == a[i+1]){
       zaehler++;
       max += zaehler;
       // irgendwie hier für vorherige Folge gleicher Zahlen einen Zwischenspeicher einrichten max2
    }
  }
  
  if(max > max2){
    return max;
  }
  return max2;

}

Wie immer wäre ich um jede Hilfestellung dankbar!
 

eRaaaa

Top Contributor
Mhm sieht ziemlich kompliziert aus was du da machst :)
Wieso nicht eher rückwirkend schauen und bei einem Fund einfach i erhöhen(nächstes Überspringen)
Also bei 1 anfangen:
{3, 4, 4, 5, 6, 8, 0, 0, 0, 0, 88, 88, 0}

4 == 3 ? Nein, weiter...
4 == 4 ? Ja, erhöhe Zähler und erhöhe die Schleifenvariable (i) 5== 4 <-- wird quasi übersprungen
6 == 5 ? Nein
8==6 ...
0 == 8
0 == 0 ? Ja , Zähler = 2 , i erhöhen
0 == 0 ? Ja Zähler = 3;
88 == 88 Zähler = 4 ...

/edit: oh stimmt, ich habe das maximal überlesen. Ja dann verstehe ich es auch so wie du :D
 
Zuletzt bearbeitet:

Greenhorn

Mitglied
Also dann habe ich die Aufgabe flasch verstanden! Ich habe das Ergebnis 4 auf die vier aufeinander foglenden "0" im Array bezogen und daher wollte ich einen Vergleich zweier Variablen, da sowohl "4" als "88" je 2x im array vorkommen.

So wie ich die Lösung von dir verstehe (Basti) zählst du den zaehler hoch wenn:

1.zaheler ++ bei 4&4
2. zaheler ++ bei 0&0
3. zaheler ++ bei 0&0
4. zaheler ++ bei 88&88

Richtig?
 

Greenhorn

Mitglied
@ Basti kein Ding!

Also stimmt der Ansatz oben? Aber wie kann ich die Werte verlgeichen, falls ein Array mehere gleiche erte in einer Reihe hat????:L
 

tagedieb

Top Contributor
Du kannst Basti's Loesung einfach ein wenig abaendern:

Also bei 1 anfangen:
{3, 4, 4, 5, 6, 8, 0, 0, 0, 0, 88, 88, 0}

4 == 3 ? Nein, weiter...
4 == 4 ? Ja, erhöhe Zähler
5== 4 <-- vergleiche Zaehler mit max und speichere das Zwischenresult falls groesser
Code:
(max = Math.max(max,zaehler);
setzte den Zaehler zurueck auf 0

6 == 5 ? Nein
8==6 ...
0 == 8
0 == 0 ? Ja, Zähler = 1
0 == 0 ? Ja, Zähler = 2;
0 == 0 ? Ja, Zähler = 3;
0 == 0 ? Ja, Zähler = 4;
88 == 0 ? Nein, Pruefe max und speichere Zwischenresultat, Zaehler zuruecksetzen
88 == 88 Zähler = 1 ...
 

Greenhorn

Mitglied
@tagdieb: Danke für den Tip.

Ich verstehe nicht warum ich bei i=1 anfangen muss? Ich vergleiche doch eh immer nur paarweise!

Wi ist der Unterschied: i= 1 if (a==a[i-1])...
i=0 if(a]==a[i+1]
 

tagedieb

Top Contributor
Im Prinzip spielt das keine Rolle. Du brauchst halt mindestens 2 Elemente zum Vergleichen, also bietet sich an bei 1 anzufangen, dann hast du schon die Elemente 0 und 1.

Hauptsache ist, das du innerhalb der Arraygrenzen bleibst. Mit i+1 ist dies schnell mal moeglich und du verursachst eine ArrayOutOfBoundsException. Mit i-1 bist du eigentlich auf der sicheren Seite, auch die Bedingungen werden einfacher und dein Code ist einfacher zu lesen.
 

Greenhorn

Mitglied
Okay super, dass kann ich mir nun für alle Aufgaben merken. Danke, dass war mir bisher nie bewusst.

Ich bin bisher auch noch nicht dahintergekommen wie ich zaehler mit max vergleichen soll, und max speichern soll, falls größer. Weil bei mir max immer == zaehler ist da:

Code:
zaehler++;
Code:
max += zaehler;

if(max>zaehler){
max = max2;
zaehler = 0;
}

macht keinen Sinn....:bahnhof:
 

Greenhorn

Mitglied
Also nachwievor check ich den Lösungsansatz von oben nicht ganz, daher neuer Versuch meinerseits, der sicherlich komplizierter ist:

Java:
int maxEqual(int []a){
  for(int i=1; i < a.length; i++){
    zaehler = 1;
    max = 0;
    max2 = 0;
    
    if(a[i] == a[i-1]){
       zaheler++;
       max += zaehler;
    }
    if(a[i] != a[i-1] && max>max2){
       max2 = max;
       zaehler = 0;
    }
  }
  if(max > max2){
    return max;
  }
    return max2;
}

Sicherlich recht kompliziert, aber würde es funktionieren? Oder ich bräuchte Hilfe wie der folgende Fall im Programm aussehen würde:

5== 4 <-- vergleiche Zaehler mit max und speichere das Zwischenresult falls groesser (max = Math.max(max,zaehler); setzte den Zaehler zurueck auf 0

:rtfm:
 

tagedieb

Top Contributor
Ja, da sind noch ein paar Fehler drin...


Java:
int maxEqual(int []a){
  for(int i=1; i < a.length; i++){
    // zaehler vor der Schleife initialisieren, ansonsten setzt du den zaehler immer wieder auf 1,
    // dasselbe mit max; max2 ist ueberfluessig und kann geloescht werden. 
    // zaehler und max sollten als lokale und nicht als Instanzvariablen definiert werden (in der Methode, nicht in der Klasse)
    zaehler = 1;
    max = 0;
    max2 = 0;
    
    if(a[i] == a[i-1]){
       zaheler++;  
       // was soll dabei rauskommen???? hier brauchst du nur den zaehler zu erhoehen
       max += zaehler;
    }
    // Falls ungleich, vergleiche max mit zaehler und speicher den groesseren wert in max (siehe java.lang.Math.max(..) ), setzte den zaehler zurueck auf 1 (wie oben)
    if(a[i] != a[i-1] && max>max2){
       max2 = max;
       zaehler = 0;
    }
  }
  if(max > max2){
    return max;
  }
    return max2;
}
 

Greenhorn

Mitglied
okay sorry da sind echt ein paar dumme Fehler drin!

Okay dann ist max also mein Zwischenspeicher und den Vegleiche ich immer nur mit Summe von Inkrment zaehler?

Probier ich nachher gleich mal aus, bin ghrad noch mit Listen beschäftigt...
 

Greenhorn

Mitglied
okay, verbesserste Variante:


Java:
int maxEqual (int [] a){
  int zaehler = 1;
  int max = 0;

  for(int i=1; i<a.length; i++){
    zaehler++;
  }

  if(zaehler>max){
    max=zaehler;
    zaehler=0;
  }

  if(zaehler > max){
    return zaehler;
  }
    return max;
 
}
 
B

bERt0r

Gast
Java:
int maxEqual (int [] a){
  int zaehler = 0;
  int max = 0;
  int merker;

if(a.length>0)					//bei einem leeren Array kommt hier 0 raus, bei deiner Implementierung eine Fehlermeldung
{
	merker=a[0];				//Erste Zahl merken
 
	for(int i=0; i<a.length; i++)
	{
		if(a[i]==merker)		//Zahl[i] mit Merker vergleichen
		{
			zaehler++;		//Zähler erhöhen
			if(zaehler>max)		//Ist ein neues Maximum erreicht?
			{
    				max=zaehler;	//neues Maximum setzten
			}
		}else				//Die gleiche Zahlenreihe hört auf
		{
			merker=a[i];		//Die Aktuelle Zahl merken
			zaehler=1;		//Zähler zurücksetzten
		}
	}
}
return max;					//max ist entweder 0, oder der höchste Zähler
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Z Vector führt mehrer, aber gleiche Elemente Java Basics - Anfänger-Themen 6
I Gleiche Klassen und Methoden in unterschiedlichen Projekten nutzen Java Basics - Anfänger-Themen 2
berserkerdq2 Spiel hängt sich immer in der 4 Runde auf, obwohl ich jede Runde das gleiche mache Java Basics - Anfänger-Themen 1
berserkerdq2 Ist JVM das gleiche wie IJVM (Bytecode) Java Basics - Anfänger-Themen 1
J Kreis soll die gleiche Fläche wie das Rechteck haben wie mache ich das? Java Basics - Anfänger-Themen 3
K Wie String prüfen ob drei mal das gleiche Zeichen vorkommt? Java Basics - Anfänger-Themen 7
W Mehrfach das gleiche Attribut für ein Objekt erzeugen (mit verschiedenen Werten) Java Basics - Anfänger-Themen 2
B Jsoup: gleiche Session nutzen Java Basics - Anfänger-Themen 0
tom.j85 Doppelte Foreach Schleife: Am Ende wird immer das Gleiche Objekt eingefügt Java Basics - Anfänger-Themen 4
X Textdatei: zwei-zeilenweise gleiche Zeilen rausschmeißen Java Basics - Anfänger-Themen 21
CptK Interface Beide Panels zeigen das Gleiche Java Basics - Anfänger-Themen 2
J Gleiche Methode in 2 verschiedenen Klassen - Lösung ? Java Basics - Anfänger-Themen 8
B Prüfen, ob Datum2 der gleiche Tag ist wie Datum1 Java Basics - Anfänger-Themen 10
O Problem gleiche Zahlen Java Basics - Anfänger-Themen 2
F Immer wieder gleiche Zufallszahl? Java Basics - Anfänger-Themen 4
N Array gleiche Datentypen zusammenrechnen Java Basics - Anfänger-Themen 28
T Classpath Zwei gleiche Dateinamen in verschiedenen Projekten möglich? Java Basics - Anfänger-Themen 13
L Gleiche Werte aus Array aussortieren Java Basics - Anfänger-Themen 5
L Gleiche Werte im Array hochzählen Java Basics - Anfänger-Themen 4
J Methoden Zwei Methoden die fast das gleiche tun organisieren Java Basics - Anfänger-Themen 3
L Classpath Zwei Bibliotheken enthalten gleiche .class Datei Java Basics - Anfänger-Themen 6
R Enum ist das gleiche wie? Java Basics - Anfänger-Themen 15
H überprüfen ob in Array gleiche int-Zahlen gespeichert werden. Java Basics - Anfänger-Themen 7
K Das Gleiche wiederholen Java Basics - Anfänger-Themen 5
Y Gleiche Arrays aus einem Array mit Objekten Java Basics - Anfänger-Themen 5
O Klasse in ArrayList speichern Problem -gleiche Speicheradresse Java Basics - Anfänger-Themen 2
M Zwei gleiche Eintraege in ArrayList finden Java Basics - Anfänger-Themen 15
D Javaliste auf gleiche Einträge überprüfen Java Basics - Anfänger-Themen 2
E Input/Output Drucken am Mac immer gleiche Schriftgröße?!? Java Basics - Anfänger-Themen 2
I immer die gleiche Zufallszahl Java Basics - Anfänger-Themen 9
L Eine ArrayList auf gleiche Inhalte prüfen Java Basics - Anfänger-Themen 10
M Erste Schritte Eclipse führt immer das gleiche Programm aus Java Basics - Anfänger-Themen 6
J Objekterzeugung im Konstruktor - Mehrfach gleiche Referenzvariable? Java Basics - Anfänger-Themen 4
A Mehrere Gegner sollen das gleiche Bild benutzen Java Basics - Anfänger-Themen 3
W JButton in gleiche Größe bringen Java Basics - Anfänger-Themen 4
M gleiche Box in GUI mehrmals verwenden Java Basics - Anfänger-Themen 5
A objekt innerhalb der gleiche klasse Java Basics - Anfänger-Themen 10
S Dasselbe ist nicht das gleiche? Java Basics - Anfänger-Themen 7
K Datentypen Gleiche Zufallszahlen in verschiedenen Datenstrukturen Java Basics - Anfänger-Themen 6
B 2D-Array, gleiche Einträge prüfen Java Basics - Anfänger-Themen 5
B Random() gleiche Zahlen ausschließen Java Basics - Anfänger-Themen 30
J Datentypen List - gleiche Einträge bei neuen Objekten Java Basics - Anfänger-Themen 31
N Threads: 4 Threads, 4mal Zugriff auf Array soll nicht der gleiche Zugriff sein Java Basics - Anfänger-Themen 4
S OOP Warum gleiche Instanz der Klasse? (Factory-Muster) Java Basics - Anfänger-Themen 13
F Gleiche JUnit-Tests automatisert mit verschiedenen Methoden ausführen Java Basics - Anfänger-Themen 6
O Zweidemensionales Array auf zwei gleiche Zahlen prüfen Java Basics - Anfänger-Themen 15
D Methode in einer anderen Methode (gleiche Klassse) aufrufen Java Basics - Anfänger-Themen 11
G Der Gleiche oder der Selbe? Java Basics - Anfänger-Themen 6
G Zählen gleiche Werte in Array Java Basics - Anfänger-Themen 5
Gama 2 (fast) gleiche Dateien - nur eine funktioniert Java Basics - Anfänger-Themen 2
B Gleiche Ordner löschen Java Basics - Anfänger-Themen 15
V Vector/Arraylist hat nur gleiche Einträge Java Basics - Anfänger-Themen 3
G Warum das Prog mehrmals das gleiche macht wegen ItemListener Java Basics - Anfänger-Themen 4
Z Feld prüfen ob 3 gleiche zahlen nach einander vorkommen Java Basics - Anfänger-Themen 3
E Gleiche Methode einer (Kinds?)Klasse erneut aufrufen Java Basics - Anfänger-Themen 2
G gleiche Strings ungleich? Java Basics - Anfänger-Themen 5
K Neue Werte für gleiche Array-Indexe Java Basics - Anfänger-Themen 16
G Gleiche Aktionen verarbeiten (aber nur einmal Code)? Java Basics - Anfänger-Themen 2
M bewirken diese Schreibweisen das gleiche? :) Java Basics - Anfänger-Themen 8
F zugriff auf gleiche klasse aus mehreren klassen. Java Basics - Anfänger-Themen 3
G 2 gleiche Strings Java Basics - Anfänger-Themen 2
N Ich kriege ganze zeit die Fehlermeldung "Inhalt der Zwischenablage kann nicht in die ausgewählten Elemente eingefügt werden" hat jemand eine Lösung? Java Basics - Anfänger-Themen 6
E Elemente aus Liste entfernen und hinzufügen Java Basics - Anfänger-Themen 3
J 2 listen vergleichen, die auch null Elemente haben können ! Java Basics - Anfänger-Themen 9
B bei 2 Arrays Anzahl gleicher Elemente vergleichen? Java Basics - Anfänger-Themen 49
frager2345 Aufgabe Hash Objekt Elemente ausgeben Java Basics - Anfänger-Themen 2
A Elemente in einem Array Java Basics - Anfänger-Themen 5
J Methoden Die Reihenfolge der Iterator-Elemente umkehren Java Basics - Anfänger-Themen 3
M ArrayList<TreeNode<T>> fortlaufende Nummerierung der Elemente Java Basics - Anfänger-Themen 5
Cassy3 Binäre Bäume Rekursiv durchlaufen und bestimmte Elemente Zählen Java Basics - Anfänger-Themen 6
B Verkettete Liste durchgehen und einzelne Elemente in neue Liste tun Java Basics - Anfänger-Themen 9
D Array Elemente sortieren in aufsteigender Reihenfolge Java Basics - Anfänger-Themen 10
Bademeister007 Elemente aus zwei verschiedenen Arrays miteinander vergleichen und gegeben falls entfernen Java Basics - Anfänger-Themen 14
T SCC Elemente Java Basics - Anfänger-Themen 0
L ArrayList auf 4 Elemente begrenzen Java Basics - Anfänger-Themen 56
H Array Elemente Java Basics - Anfänger-Themen 17
T Elemente aus Array zu TableView JavaFX übertragen Java Basics - Anfänger-Themen 2
J Array Elemente werden nicht gefunden! Java Basics - Anfänger-Themen 6
GAZ String replace() Elemente tauschen Java Basics - Anfänger-Themen 13
J Array; Elemente kopieren Java Basics - Anfänger-Themen 17
V Array aus Klasse um vererbte Elemente erweitern Java Basics - Anfänger-Themen 3
S Laufzeit Quicksort wenn alle Elemente gleich sind Java Basics - Anfänger-Themen 4
A Array Elemente extrahieren ! Java Basics - Anfänger-Themen 4
J Elemente in einem 2D-Array summieren Java Basics - Anfänger-Themen 6
Kirby.exe Anzahl vorkommender Elemente im Array zählen Java Basics - Anfänger-Themen 9
M Matrix auf 4 Elemente untersuchen mit offenen Enden Java Basics - Anfänger-Themen 8
M Matrix Elemente vergleichen Java Basics - Anfänger-Themen 11
S Elemente eines Arrays bei Ausgabe auslassen Java Basics - Anfänger-Themen 2
I Alle Elemente von zwei Listen vergleichen Java Basics - Anfänger-Themen 1
L String zerlegen & elemente hinzufügen Java Basics - Anfänger-Themen 5
L Anzahl der Elemente key in einem Array mit log(N) Laufzeit Java Basics - Anfänger-Themen 4
L Erste Schritte Elemente zwei Schlangen vergleichen Java Basics - Anfänger-Themen 14
E Elemente aus Liste löschen Java Basics - Anfänger-Themen 5
L Array Elemente verschieben Java Basics - Anfänger-Themen 5
S Elemente in Liste einfügen Java Basics - Anfänger-Themen 2
D jsoup.select findet keine elemente Java Basics - Anfänger-Themen 2
F JList Elemente mit Strings vergleichen Java Basics - Anfänger-Themen 12
W ArrayList löscht alle Elemente bis auf eines Java Basics - Anfänger-Themen 2
M Elemente in einer ArrayList einander zuordnen. Java Basics - Anfänger-Themen 18
T Klassen Doppelte Elemente aus Container entfernen Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben