Matrix reduzieren zwei Methoden

Gandrosh

Neues Mitglied
Hallo Leute,

ich habe folgendes Problem: ich will eine Methode schreiben, die aus einer eingegebenen quadratischen Matrix eine neue ohne die Zeile Z und die Spalte S erstellt. Dafür habe ich zwei Methoden geschrieben, die meiner Meinung nach das gleiche tun sollten, nur funktioniert nur eine davon, bei der anderen erhalte ich eine OufOfBoundsException. Kann mir jemand sagen wo der Fehler liegt?

1. Die funktionierende Methode:
Java:
public static int[][] neu(int Z, int S, int[][]alt) {
  int[][] neu = new int[alt.length-1][alt.length-1];
  int zSprung = 0;
  int sSprung = 0;

  for (int zeile = 0; zeile < neu.length; zeile++) {
    if (zeile == Z) zSprung = 1;
    sSprung = 0;
    for (int spalte = 0; spalte < neu.length; spalte++) {
      if (spalte == S) sSprung = 1;
      neu[zeile][spalte] = alt[zeile+zSprung][spalte+sSprung];
    }
  }
}
2. Die Methode mit dem Überlauf:
Java:
public static int[][] neu(int Z, int S, int[][] alt) {
  int[][] neu = new int[alt.length-1][alt.length-1];
  int zSprung = 0;
  int sSprung = 0;
  int zeile = 0;
  int spalte = 0;

  while (zeile < neu.length) {
    if (zeile == Z) zSprung = 1;
    sSprung = 0;
    zeile++;
    while (spalte < neu.length) {
      if (spalte == S) sSprung = 1;
      neu[zeile][spalte] = alt[zeile+zSprung][spalte+sSprung];
      spalte++;
    }
  }
}
Vielen Dank schonmal,
Gandrosh
 
Zuletzt bearbeitet von einem Moderator:

strußi

Top Contributor
neu.length-1 im output zeigt er dir die Zeile/n an in der der fehler auftritt

ich würde auch so vorgehen, dass ich zwei for-schreilfen schachtel
Java:
for( int row =0; row <neu.length-1; row++{
for( int col =0; col <neu[row].length-1; col++){
  if( row ==zeileZuUeberspringen){
    row++;
} else if( col ==spalteZuUeberspringen){
col++;
} else{
neu[ row][ col] =alt[ row][col];
}
}
}
 
Zuletzt bearbeitet von einem Moderator:

klauskarambulut

Bekanntes Mitglied
Verschachtelte Schleifen sind immer zu vermeiden.

Mache dir eine Hilfsmethode die sich nur um eine Einzelne Zeile kümmert
Java:
private static int[] newRow(int[] row, int skipColumn) {
  int[] newRow = new int[row.length-1];
  for(int i = 0; i < row.length; i++) {
    if(i<skipColumn) {
      newRow[i] = row[i];
    } else if(i== skipColumn) {
      // do nothing
    } else {
      newRow[i-1] = row[i];
    }
  }
  return newRow;
}

Viel einfacher und übersichtlicher zu handhaben oder?

Java:
public static int[][] newMatrix(int skipColumn, int skipRow, int[][] matrix) {
  int[][] newMatrix = new int[matrix.length-1][matrix[0].length-1];
  for(int i = 0; i < matrix.length; i++) {
    if(i<skipRow) {
      newMatrix[i] = newRow(matrix[i], skipColumn);
    } else if(i== skipRow) {
      // do nothing
    } else {
      newMatrix[i-1] = newRow(matrix[i], skipColumn);
    }
  }
  return newMatrix;
}

Kopieren der Matrix läuft fast genauso ab wie das Kopieren einer Zeile und nutzt die Methode zum Kopieren einer Zeile.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N lwjgl Projection Matrix löscht Dreieck Allgemeine Java-Themen 1
H Matrix ohne Array erstellen Allgemeine Java-Themen 9
T Google Distance Matrix API Hello World/ Client Secret Allgemeine Java-Themen 3
R Multiplikation von Matrix und Vektor Allgemeine Java-Themen 5
P Matrix-Vektor Multiplikation Allgemeine Java-Themen 8
P Matrix erstellen Allgemeine Java-Themen 1
P Matrix-Vektor-Multiplikation Allgemeine Java-Themen 25
J Matrix Allgemeine Java-Themen 2
R Bibliothek für Darstellung von char auf 5x7 Dot-Matrix Allgemeine Java-Themen 2
K LED-Matrix oder andere "Hardware" für JavaProgrammierung Allgemeine Java-Themen 9
D Suche Matrix Libraries Allgemeine Java-Themen 11
P Matrix von Tastatur in 2D Array??? Allgemeine Java-Themen 7
P Matrix Kurtosis berechnen Allgemeine Java-Themen 40
D 8x8 Matrix mit Schachbrettbeschriftung Allgemeine Java-Themen 8
E Zufall in Matrix Allgemeine Java-Themen 10
S Algoritmus Distribution in einer Matrix Allgemeine Java-Themen 7
C Linie in Matrix machen Allgemeine Java-Themen 5
D Matrix, ArrayList, null-Zellen Allgemeine Java-Themen 6
D Zweidimensionales Array als Matrix ausrpinten lassen Allgemeine Java-Themen 4
S Darstellung einer dynamischen Matrix Allgemeine Java-Themen 9
T Applikation für RGB LED Matrix Allgemeine Java-Themen 7
T DataFrame (Matrix mit mit verschiedenen Typen pro Spalte) Allgemeine Java-Themen 4
S Array Matrix erstellen? Allgemeine Java-Themen 9
RoliMG matrix diagonalen initialisieren Allgemeine Java-Themen 2
M HashMap kapselt zwei Objekte aber wie baut man eine Matrix? Allgemeine Java-Themen 2
B Entfernen von Zeilen/Spalten aus einer Matrix Allgemeine Java-Themen 8
J Matrix mit unterschiedlicher Anzahl von Spalten pro Zeile? Allgemeine Java-Themen 4
W Matrix potenzieren Allgemeine Java-Themen 4
E ArrayList Matrix sortieren Allgemeine Java-Themen 4
Drachenbauer Wie kann ich die menge an code reduzieren? Allgemeine Java-Themen 28
L Bilderfarben reduzieren Allgemeine Java-Themen 3
T Datum um ein Tag reduzieren Allgemeine Java-Themen 6
H Ausführungsgeschwindigkeit reduzieren. Geht das? .. Allgemeine Java-Themen 21
O Text aus einer Textdatei rausholen, der zwischen zwei Schlüsselworten steht Allgemeine Java-Themen 4
D Zwei Listen vergleichen Allgemeine Java-Themen 7
Tobero Wie berechnet man ob zwei Linien sich schneiden? Allgemeine Java-Themen 2
kodela Zwei gleichzeitig gedrückte Steuertasten Allgemeine Java-Themen 10
X Bedingung zwei mal überprüfen Allgemeine Java-Themen 4
Zrebna Random Number - Generische Formel zwischen zwei INKLUSIVEN Werten Allgemeine Java-Themen 16
D Input/Output Zwischen zwei ID-Räumen unterscheiden und Objekt löschen Allgemeine Java-Themen 16
D OOP Gemeinsamen ID-Raum für zwei Klassen implementieren Allgemeine Java-Themen 7
S Wenn eine Klasse zwei Interfaces mit derselben Methodensignatur implementiert: welche wird aufgerufen? Allgemeine Java-Themen 15
S Kann man Variablen oder Felder definieren deren Typ zwei Interfaces ist..? Allgemeine Java-Themen 9
K Aus String zwei Jahreszahlen auslesen Allgemeine Java-Themen 18
M Wie kann man eine void Methode mit Variablen von zwei verschiedenen Objekten ausführen? Allgemeine Java-Themen 15
VfL_Freak Double mit zwei festen NK-Stellen ausgeben Allgemeine Java-Themen 9
Neoline Methoden Zwei Arrays abwechselnd zusammenführen Allgemeine Java-Themen 15
J Zwei Wavdateien gleichzeitig mit SourceDataLine abspielen Allgemeine Java-Themen 0
D Best Practice Die niedrigste Differenz zwischen zwei Listen ermitteln. Allgemeine Java-Themen 10
J Fahrroute zwischen zwei Punkten finden Allgemeine Java-Themen 1
J Kollision von zwei Kreisen Allgemeine Java-Themen 15
J Transfer von Integer zwischen zwei Clients - RMI Allgemeine Java-Themen 4
S Variablen split-Funkton mit zwei Variabeln verwenden? Allgemeine Java-Themen 4
T Alle Kombinationen aus zwei Arrays Allgemeine Java-Themen 8
G Liste zwischen zwei Kalenderdaten erstellen Allgemeine Java-Themen 3
AssELAss Zwei Arrays / ArrayLists inhaltlich vergleichen Allgemeine Java-Themen 2
H RegularExpression zwischen zwei Strings Allgemeine Java-Themen 2
P Zwei Applikationen mit einem Job Allgemeine Java-Themen 0
A Lineare Interpolation mit zwei Arrays Allgemeine Java-Themen 4
E Berechnung des Schnittpunktes von zwei Geraden Allgemeine Java-Themen 1
S Zwei String vergleichen, Fehler markieren Allgemeine Java-Themen 3
Dechasa Vergleichen von zwei Arrays Allgemeine Java-Themen 4
P Zwei ArrayLists: Ohne die eine überhaupt anzurühren, wird sie verändert Allgemeine Java-Themen 2
S Anwendung zum ausrechnen der Differenz von zwei Tagen Allgemeine Java-Themen 9
F Zwei LinkedHashMaps iterieren und vergleichen Allgemeine Java-Themen 2
M Zwei unterschiedliche JAR Dateien mit ANT erstellen Allgemeine Java-Themen 8
B Fehler beim Auslesen von Einstellungen. Zwei ähnliche Blöcke, nur eins geht. Allgemeine Java-Themen 5
L Zwei Files miteinander vergleichen und Grafisch darstellen Allgemeine Java-Themen 1
T Zwei Wortendungen vergleichen ohne .equals Allgemeine Java-Themen 10
F Webstart zwei Java Versionen / aktivieren bzw deaktivieren Allgemeine Java-Themen 2
S Zwei Comparable (compareTo) vergleichen Allgemeine Java-Themen 6
E zwei Gleitkommazahlen durcheinander dividieren Allgemeine Java-Themen 2
X Generic muss zwei Klassen/Interfaces erfüllen Allgemeine Java-Themen 5
turmaline OOP zwei gleiche Methoden mit kleinen Unterschieden Allgemeine Java-Themen 15
C Threads Zwei Threads greifen auf LinkedList zu. Allgemeine Java-Themen 12
T Wie heißt ein Binärbaum, dessen Knoten immer zwei Kinder haben müssen? Allgemeine Java-Themen 2
C ActionListener zwei Buttons zuweisen Allgemeine Java-Themen 11
M Eclipse drei slashs durch zwei ersetzen? Allgemeine Java-Themen 3
1 zwei Strings vergleichen Allgemeine Java-Themen 16
C Buchstaben, die in zwei Wörtern vorkommen Allgemeine Java-Themen 13
J Gleiche Packagestruktur in zwei *.jar Dateien Allgemeine Java-Themen 4
G Zwei bytes vergleichen Allgemeine Java-Themen 2
B zwei-dimensionale Collections bzw. Array mit Indizes Allgemeine Java-Themen 3
C Zwei Arrays vereinen Allgemeine Java-Themen 3
K Objekt-Austausch zwischen zwei Programmen über System-Clipboard Allgemeine Java-Themen 5
H Zwei verschiedene Dateien mittels einem Binärstream übertragen? Allgemeine Java-Themen 13
N hashCode() für zwei ints Allgemeine Java-Themen 5
turmaline Gleichheit von zwei Maps Map <String, Map <String, String>> Allgemeine Java-Themen 30
N Wie Listenabgleich auf zwei CPU Cores auslagern? Allgemeine Java-Themen 6
D Zufall wahr bzw. falsch mit zwei Faktoren Allgemeine Java-Themen 10
H Datenaustausch zwischen zwei Java-Programmen Allgemeine Java-Themen 5
H Ausgabe von zwei Textfeldern Allgemeine Java-Themen 3
H Zwei unabhängige Threads miteinander kommunizieren lassen Allgemeine Java-Themen 3
G zwei mal synchronized Allgemeine Java-Themen 5
Z zwei Daten vergleichen Allgemeine Java-Themen 4
C ArrayList anhand von zwei Attributen sortieren Allgemeine Java-Themen 4
S Alle Elemente von zwei Listen vergleichen Allgemeine Java-Themen 10
T IText: Zwei A4 PDF´s auf ein A3 PDF´s Allgemeine Java-Themen 2
J Verschachtelte ListIteratoren um in zwei Listen hin und herzugehen Allgemeine Java-Themen 5
A Differenz zwischen zwei Uhrzeiten Allgemeine Java-Themen 7

Ähnliche Java Themen


Oben