prüfen ob alle array werte gleich sind

ich habe ein zweidimensionales array mit x (je nach Eingabe) länge und möchte prüfen ob jedes dieser Werte gleich ist. Falls ja dann true, sonst false. Weiss jemand wie ich das machen kann? Ich muss nur die Prüfung vornehmen.

zusätzlich muss ich diese Werte mit anderen Werten auf Gleichheit prüfen. Aber erstmal die Array Werte, das ich das schwierigste :)

ich wollte es irgendwie mit der for-schlaufe lösen, aber habe überhaupt keinen Anhaltspunkt.
 
Zuletzt bearbeitet:
Ich sollte noch ergänzen:
Es ist eine Matrix, also gleiche Anzahl Spalten wie Zeilen. Die genau Anzahl wird bei Eingabe ermittelt.
Die Berechnung der Summe jeder Zeile und Spalte sowie deren Diagonalen habe ich bereits vorgenommen.
sumR(i) = summe aller Zeilen
sumC(j) = summe aller Spalten
sumDiaR = summe der diagonalen rechts nach Links
sumDiaL = summe der diagonalen links nach rechts

Wie kann ich jetzt prüfen ob all diese Werte gleich sind? Mit hundert if abfolgen könnte ich es machen, aber schön ist es nicht. Ausserdem ist die Anzahl Spalten/Zeilen nicht bekannt, darum array.
 
Java:
	public static boolean check_x_for_equality(int[][] zweidimensionalesArray) {
		for (int i = 0; i < zweidimensionalesArray.length - 1; i++) {
			if (zweidimensionalesArray[i][0] != zweidimensionalesArray[i + 1][0]) {
				return false;
			}
		}
		return true;
	}
	public static boolean check_y_for_equality(int[][] zweidimensionalesArray) {
		for (int i = 0; i < zweidimensionalesArray.length - 1; i++) {
			if (zweidimensionalesArray[i][1] != zweidimensionalesArray[i + 1][1]) {
				return false;
			}
		}
		return true;
	}
	public static void main(String[] args) {
		int[][] zweidimensionalesArray = new int[100][2];
		for (int i = 0; i < zweidimensionalesArray.length; i++) {
			zweidimensionalesArray[i][0] = 100;
			// zweidimensionalesArray[i][1] = 1;
			zweidimensionalesArray[i][1] = i + 1;
		}
		System.out.println(Arrays.deepToString(zweidimensionalesArray));
		System.out.println(check_x_for_equality(zweidimensionalesArray));
		System.out.println(check_y_for_equality(zweidimensionalesArray));
	}
 
Java:
for ( int zeile = 0; zeile < array.length; zeile++ ) {
    for ( int spalte=0; spalte < array[zeile].length; spalte++ )
        if( array[zeile][spalte]  !=  array[0][0] ) return false;
return true;
 
@tommysenf
ich möchte prüfen ob jede Spalte untereinander gleich ist, jede Zeile untereinander gleich ist, die beiden Diagonalen gleich sind, eigentlich jedes dieser 4 Elemente untereinander gleich ist. Erst dann ist true, sonst ist false. Wie gesagt, Summe aller Zeilen, Spalten und Diagonalen habe ich. Die Frage ist nur noch wie ich die 4 Dingen miteinander vergleichen. Zwei davon sind arrays (Spalten und Zeilen). Die anderen beiden sind nur jeweils ein Wert.

Könntest du mir das kurz aufzeigen? :)
 
Kannst du das mal an einem Beispiel veranschaulichen? Ist schon schwer zu verstehen anhand der Beschreibung :p
 
Zuletzt bearbeitet:
Java:
public boolean allEquals(boolean magic) {
    int cw = sumC(0);
    for (int spalte = 1; spalte < spalten; spalte++) {
        if (cw != sumC(spalte)) {
            return false;
        }
    }

    int rw = sumR(0);
    for (int zeile = 1; zeile < zeilen; zeile++) {
        if (rw != sumR(zeile)) {
            return false;
        }
    }
    if (magic) {
        return cw == rw && cw == sumDiaR && cw == sumDiaL;
    } else {
        return sumDiaR == sumDiaL;
    }
 
ich habe vergessen, dass ich dieses Thema offen habe. Daher brauche ich das andere Thema nicht mehr.
@mihe7
so habe ich mir das auch vorgestellt. ABer wie kann ich das Ergebnis (true oder false) in der main Methode aufrufen? Also falls das Ergebnis false ist, dann in der Main Methode den Text ausgeben "Falsch".
 
ich habe das Problem gelöst. Habe einfach die ganze Rechnerei in einer Methode Rechnen (boolean)... und dann in der Main nur die Ausgabe ob True oder False abgefragt.

Es fehlt mir noch eine Sache. Ich möchte aus der Methode Rechnen eine Zahl in die Main Methode übertragen. Geht das? Kann ich boolean und int übertragen?
 
ich habe es anders gemacht.
Code:
if (Rechnen(false)) {
    System.out.println("Falsch");
}
Wie kann nun einen int Wert aus der anderen Methode übernehmen? Ich habe das Gefühl, ich muss alles nach Methoden unterteilen und das return nur einen Wert zurückgeben kann.
 
ich habe es anders gemacht.
Wenn Du das in main hast, ist Rechnen eine statische Methode. Vergiss static (außer für main).

NB: halte Dich an die Benennungskonventionen von Java: Namen für Parameter, Variablen und Methoden in lowerCamelCase, für Typen (wie Klassen) in UpperCamelCase. Das erleichtert allen das Lesen von Code.

Ich habe das Gefühl, ich muss alles nach Methoden unterteilen und das return nur einen Wert zurückgeben kann.
Das nennt man wohl strukturieren :) Und richtig, return kann nur einen Wert zurückgeben, der allerdings auch eine Objektreferenz sein kann.

Wie kann nun einen int Wert aus der anderen Methode übernehmen?
Ich verstehe nicht, was Du damit meinst. Vermutlich hängt Dein Problem damit zusammen, dass Du mit statischen Methoden arbeitest. Evtl. kannst Du mal den kompletten Code posten und daran erklären, was Du vor hast.
 
ich möchte einfach aus einer Methode, die mir einen Boolean Wert zurückgibt (haben wir vorher gelöst), auch einen Wert des Typs int zurückgeben lassen. Geht das überhaupt oder muss ich wie du sagst, noch weiter strukturieren, damit eine Methode nur einen Typ zurückgibt? Falls ja, dann würde das den Rahmen sprengen. Jede Variable, die ich irgendwo definiert habe müsste dann in die andere Methode übergeben werden und dann das Ergebnis wiederum in die nächste usw. ist doch ein Chaos?! :D
 
ich möchte einfach aus einer Methode, die mir einen Boolean Wert zurückgibt (haben wir vorher gelöst), auch einen Wert des Typs int zurückgeben lassen.
Dazu brauchst Du einfach einen geeigneten Datentyp.

Java:
class Ergebnis {
    public final int wert;
    public final boolean korrekt;
    public Ergebnis(int wert, boolean korrekt) {
        this.wert = wert;
        this.korrekt = korrekt;
    }
}
Und dann kannst Du Deine Methode ändern zu
Java:
Ergebnis rechne(boolean magic) {
    ...
    return new Ergebnis(42, true);
}
 
Java:
Ergebnis rechne(boolean magic) {
    ...
    return new Ergebnis(42, true);
}
Wie soll ich das verstehen? Statt nur einen return true schreibe ich return true + int Wert?
Ich habe es probiert und es geht nicht. "cannot be resolved to a type"

Kann ich den einen Wert (Summe von Zahlen) vielleicht ausserhalb der Methode speichern, damit er in allen Methoden aufrufbar ist? Sonst müsste ich hier den ganzen Code strukturieren, was bedeutet zig Stunden Arbeit um alles neu zu definieren.
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben