Nochmals Arrays

Hallo,

nun möchte ich in den Arrays die Elemente vergleichen:

sprich
Code:
a={1,2,3,2,3,2,3,4,5}

b={5,5,5,5,4,3,2,1}

haben gleiche elemente

also soll boolean s= true sein.

Nun gibts eigentlich zwei Ansätze (sicherlich auch mehr, mir fallen momentan nur zwei ein)

1. aus a und b jeweils a und d machen welche dann einfach die Elemente enthalten und diese dann vergleichen:
Code:
sprich c={1,2,3,4,5}

ich weiß aber nicht wie ich denn c vernünftig erstellen kann.

2. den größten wert in a suchen und mit größten wert in b vergleichen. dann zweit größten bis zu dem kleinsten bis eben komplette übereinstimmung erreicht wird oder erste niht übereinstimmung.

wie ich den größten wert bestimme weiß ich.
Code:
int gW;
gW=a[0];
for (int i=0;i<a.length;i++){
if (a[i]>gW{
gW=a[i]}
}

wie bestimme ich aber den zweitgrößten etc...?

theoretisch wenn ich den zweitgrößten bestimmt habe kann ich ja die werte speichern in einem array und dann habe ich ja die sachen aus 1 und kann dann leicht vergleichen.
 
Wo ist denn das Prob.?
Beim 1.
Erste Feld lesen, Rest durchgehen und zählen wie oft die Zahl vorkommt (wegen doppelten Werten), 2. Array durchgehen und zählen wie oft die Zahl (bzw. das Objekt) da vorkommt, kommt es zu Unstimmigkeiten setzt du ne boolean auf true und breakst die Schleifen, am Ende gibst du sie zurück.
Aber natürlich ist es dann true wenn sie NICHT übereinstimmen, finde es aber schöner wenn eine boolean zuerst auf false und dann wärend der Schleife auf true gesetzt wird.
Event. dann noch eine HashMap wo du bereits geteste Werte einträgst, damit du später nicht doppelt prüfst wenn ein Wert wie z. B. die zweier im ersten Array doppelt vorkommen. (HashMap verknüpft einen Key mit Value. Kannst z. B. den Integer mit nen kleinen Wert wie nen booleanischen Wert verknüpfen, existiert er nicht wird null zurückgegeben.)

Aber wie dus im Endeffekt machst ist deine Sache.
 
Ja, weiß auch nicht wieso es bei mir gedauert hat

Habe es nun so gelöst:

Code:
public class CountMax {
public static void maxCount(int[] a){
int gW,size,mw;
size=0;
gW = a[0];
for (int i=0; i<a.length;i++){
if (gW<a[i]) {
gW=a[i];
}
}
for (int i=0;i<a.length;i++){
if (gW==a[i]){
size++;
}
}
System.out.println("Die größte Zahl"+gW+"kommt"+size+"mal vor.");
}
}

Code:
class CountMaxTest {
public static void main (String [] args) {
int [] b={1,2,3,4,4,4,5,6,7,2,2,2,7,7,7};
CountMax.maxCount(b);
}
}
 
Zurück