Anzahl der Zeilen ausgeben lassen

WillSee

Mitglied
Hallo. bin neu hier. Möchte nur mein Wisse Schritt für Schritt erweitern. Bin ein beginner in Java.
Im Programm gehts darum im 2-dim. Array Zeilen zu erkennen, die 3 gleiche Zahlen besitzen.
Meine Frage: Gibts ein Befehl oder Ähnliches, mit dem man die Anzahl der Zeilen ermitteln kann, die 3 gleiche Ziffern besitzen. Danke!

public class zweidimenionaleArrays {

public static void main(String[] args) {

int[][] arrayZweiDim = {{1, 2, 1},
{3, 4, 3},
{1, 2, 3}};

boolean result = playgroundSpecial(arrayZweiDim);
System.out.println("Enthält eine Zeile drei gleiche Zahlen? " + result);

System.out.println("Und wie viele Zeilen genau besitzen 3 gleiche Zahlen?");


}


public static boolean playgroundSpecial(int[][] arrayZweiDim) {

int temp = 0;

for(int i = 0; i < arrayZweiDim.length; i++) {


if(arrayZweiDim[0] == arrayZweiDim[1] && arrayZweiDim[0] == arrayZweiDim[2]) {
temp++;
}
}
if(temp > 0) {
return true;
}
else {
return false;
}

}

}
 
Du kannst Dir hier Collections.frequency(...); zunutze machen, wenn du möchtest:
Java:
    public static List<int[]> search(int[][] a2d) {
        return Arrays.stream(a2d)
        .filter(a -> Collections.frequency(Arrays.stream(a).boxed().collect(Collectors.toList()), a[0]) == a.length)
        .collect(Collectors.toList());
    }

Java:
int[][] a2d2 = { { 1, 1, 1 }, { 3, 3 }, { 5, 5, 5, 4 } };
search(a2d2).forEach(a -> System.out.println(Arrays.toString(a)));
 
Hast du überhaupt die Aufgabe gelesen?
Natürlich. Sonst wüsste ich doch nicht, worums geht...

Aber eine Frage hätte ich doch noch. Gibt es immer drei Elemente und das Kriterium ist, dass alle drei Elemente gleich sind? ... Weil, wenn nicht, dann hab ich die Aufgabenstellung doch nicht verstanden... Das liegt dann aber nicht an mir, sondern weil sie unverständlich, schlecht und unzureichend vom TE wiedergegeben wurde!

Zudem gab es hier die Anforderung etwas dabei zu lernen. Von daher fand ich meinen Collections.frequency(...);-Einwurf angebracht.
 
unverständlich, schlecht und unzureichend
Das kann man evtl. nicht ausschliessen... Bei dem gegebenen Array
{{1, 2, 1},
{3, 4, 3},
{1, 2, 3}}; sieht man leicht, dass die Zeile {1,2,1} genau 1x auftritt, {3,4,3} auch 1x, und {1,2,3} ebenfalls 1x (hiesse im Endergebnis {1,1,1} als Ergebnis.
Mit z.B.
{{1, 2, 1},
{3, 4, 3},
{1, 2, 3}
{1, 2, 3}};
wäre das {1,2,1} genau 1x, {3,4,3} ebenfalls 1x, aber { 1,2,3 } 2x vorhanden.
Und auf Anfängerniveau sind Lösungen mit Streams wohl eher nicht zu erwarten.
 
Also, ich kann die Interpretation von @iwer1 der in der Tat mehrdeutig formulierten Frage ohne jegliches sinnvolles Beispiel schon verstehen:
Im Programm gehts darum im 2-dim. Array Zeilen zu erkennen, die 3 gleiche Zahlen besitzen.
Was genau soll "Zeilen, die 3 gleiche Zahlen besitzen" genau heissen?
1. Interpretation: Paarweise Zeilen sind gleich
2. Interpretation (von @iwer1 ) : Jede Zeile besteht aus gleichen Zahlen. Also {1, 1, 1} -> jupp, gleich, {2, 2, 2} -> jupp, auch gleich, {1, 2, 1} -> nein, Zahlen unterschiedlich
3. Interpretation (ebenfalls von @iwer1 im Satz danach erwähnt): Jede Zeile hat genau 3 gleiche Zahlen: {1, 1, 1, 2} -> jupp, drei 1en.

Alle drei Interpretationen sind vom Wortlaut der initial gestellten Frage gleichermassen möglich.

EDIT: Und, wenn man sich den leider nicht in code-Tags gesetzten Beispielcode des initialen Posts anguckt, dann wird der Text kursiv ab dem if-Statement, in welchem die Zahlen des Arrays verglichen werden. Ich "vermute", dass hier auch der Index i verwendet wurde. Demnach bin ich sogar der Meinung, dass vom TE die 2. Interpretation gemeint war.
 
Zuletzt bearbeitet:
Danke @httpdigest , also lag ich doch nicht so daneben. Das Beispiel war einfach... schlecht. Aber bitte aufpassen, falls das zweidimensionale Array leere "Zeilen"/Arrays enthält.

Und Arrays.stream(a).boxed().collect(Collectors.toList()) sieht furchtbar aus, muss man bei primitiven int arrays aber so machen leider...

@ TE bitte überlege dir, wie du es mit zwei Schleifen (oder ggf auch mit einer zusätzlichen Methode) hinbekommen könntest...
 
Nicht schlecht, Guys. Ne wirklich lebendige Community.
Ich meine es ganz einfach:
Ist beispielsweise 2 Mal (oder 3 Mal, egal) folgendes vorhanden:
{1, 2, 3}
{1, 2, 3}

falls ja, soll ausgegeben werden:

"2 (oder 3) Zeilen haben dieselben Zahlen".
 
Das ist aber immer noch zu ungenau formuliert.
Was soll denn ausgegeben werden bei:
{1,2,3}; {1,2,3}; {4,5,6}; {4,5,6}; {4,5,6}
?
Haben hier zwei Zeilen dieselben Zahlen, oder drei Zeilen? Oder zwei und drei Zeilen?

EDIT: und gelten die Zeilen {1,2,3} und {3,2,1} als "gleich"?
Und gelten die Zeilen {1,2,3} und {1,2,3,3} als "gleich" (haben sie ja die gleichen Zahlen)?
Und gelten die Zeilen {1,2,3,4} und {1,2,3} als "gleich" (haben sie ja die gleichen drei Zahlen)?
 
Zuletzt bearbeitet:
Kurzgefasst ist für den Rechner (im Ggs. zum Menschen) ein Array {1,2,1} _nicht_ dasselbe wie {2,1,1}. Abgewandeltes Beispiel von tutego:
Java:
public class deep_equals {
    public static void main (String[] args){
        
  Object[] b1 = { "1", "2", "1" };
 Object[] b2 = { "2", "1", "1" };
 System.out.println( Arrays.deepEquals( b1, b2 ) );
}
        }
Ausgabe: false

vs.
Java:
public class deep_equals {
    public static void main (String[] args){
        
    
    Object[] b1 = { "1", "2", "1" };
 Object[] b2 = { "1", "2", "1" };
 System.out.println( Arrays.deepEquals( b1, b2 ) );
}
        }
Ausgabe: true
 
Das ist aber immer noch zu ungenau formuliert.
Was soll denn ausgegeben werden bei:
{1,2,3}; {1,2,3}; {4,5,6}; {4,5,6}; {4,5,6}
?
Haben hier zwei Zeilen dieselben Zahlen, oder drei Zeilen? Oder zwei und drei Zeilen?

EDIT: und gelten die Zeilen {1,2,3} und {3,2,1} als "gleich"?
Und gelten die Zeilen {1,2,3} und {1,2,3,3} als "gleich" (haben sie ja die gleichen Zahlen)?
Und gelten die Zeilen {1,2,3,4} und {1,2,3} als "gleich" (haben sie ja die gleichen drei Zahlen)?
gelten die Zeilen {1,2,3} und {3,2,1} als "gleich"? Nein
Und gelten die Zeilen {1,2,3} und {1,2,3,3} als "gleich" (haben sie ja die gleichen Zahlen)? nein
Und gelten die Zeilen {1,2,3,4} und {1,2,3} als "gleich" (haben sie ja die gleichen drei Zahlen)? nein

Was soll denn ausgegeben werden bei:
{1,2,3}; {1,2,3}; {4,5,6}; {4,5,6}; {4,5,6}

sehr gute Frage 🙂
Am besten wäre wohl:
5 Zeilen besitzen 3 gleiche Zahlen

Das wäre aber nicht genau. Man müsste einen Schritt weiter gehen und irgendwie programmieren (in deinem Bsp):
2 Zeilen besitzen 3 identische Zahlen
3 Zeilen besitzen andere identischen Zahlen
 
Nächste Frage (wurde ja aber auch schon häufiger oben gestellt): "Enthalten alle Zeilen immer _exakt_ drei (3) Zahlen?"
Falls nein: Sollen immer nur jeweils drei gleiche Zahlen in den Zeilen mit mehr als drei Zahlen gefunden werden, oder sollen die Zeilen immer exakt gleich sein, egal, wieviele Zahlen sie jeweils enthalten?
 

Zurück
Oben