Matrix Klasse mit Mehrdimensionalen Array (Addition, Multiplikation, to String)

Diskutiere Matrix Klasse mit Mehrdimensionalen Array (Addition, Multiplikation, to String) im Java Basics - Anfänger-Themen Bereich.
F

fhoffmann

und das einzige was mir da fehlt ist das parsen der Kommandoargumente
Dann musst du erst einmal einen "Vertrag" mit dir selber machen, wie du die Matrixelemente eingeben willst.

Wahrscheeinlich sollen die Elemente in einer Zeile durch Leerzeichen (oder durch Tabulatoren?) getrennt sein.
Mehere Zeilen sollen durch einen "Zeilenumbruch" (möglicherweise "0D0A") getrennt werden. Aber es wäre natürlich ebenso möglich, unterschiedliche Zeilen durch "X" zu trennen.

Was willst du?
 
Z

zDieTaschenlampe

Wie MrBrown schon gesehen hat und gerade geschrieben hat, ist es schon vorgegeben. " Eine Matrix wird dabei als durch Semikolon separierte Liste von Zeilen dargestellt. Eine Zeile besteht aus 32-Bit-Ganzzahlen, die jeweils durch Kommata separiert werden "

Aber jetzt nochmal zur Frage wie parst man das ? Normale Integers sind ja einfach mit Integer.parseint(args[..]) zu parsen. Vor kurzem hab ich auch gelernt, wie man ein Array parst, aber wie man das jetzt macht, weiß ich einfach nicht. Deswegen brauch ich eure Hilfe bitte
 
Z

zDieTaschenlampe

Was hast du denn dort gelernt?
Wenn ich beispielsweise bei der Kommandozeilenargumente 1, 2 ,3 ,4 ,5 .... mitgeben, dann kann ich einfach mit einer schleife :
Code:
for (int i = 0; i < args.length; i++) {
            Integer.parseInt(args[i]);
        } // Diese Werte dann einfach noch speichern oder direkt weiterverwenden , aber wie soll das an meinem Bsp mit mehrdimensionalen Arrays gehen
 
Z

zDieTaschenlampe

Und wie man mit Strings arbeitet hast du doch sicher auch gelernt?
Ich versteh leider nicht, worauf du hinaus willst :(

Ansatz sieht doch so aus :
Code:
public static void main(String[] args) {

        String[] firstmatrix = args[1].split(";");
       
        // Jetzt trennt er bei der Einagbe : 1,2;0,3 1,2 und 0,3 voneinander und speichert diese in mein String array oder ?
Edit: Falls der Ansatz stimmt, dann ist die Länge meines String Arrays ja theoretisch die Zeilenanzahl meiner Matrix
 
Z

zDieTaschenlampe

Wieso funktioniert das folgende aber nicht?
Code:
public static void main(String[] args) {

        String[] firstmatrix = args[1].split(";");
        
        for(int i=0; i< firstmatrix.length; i++) {
            Terminal.printLine(firstmatrix[i]);
        }
Will nur kurz sehen, ob der String Array richtig gesplitted wurde, aber krieg eine ArrayOutOfBounds
 
Z

zDieTaschenlampe

Wieso funktioniert das folgende aber nicht?
Code:
public static void main(String[] args) {

        String[] firstmatrix = args[1].split(";");
       
        for(int i=0; i< firstmatrix.length; i++) {
            Terminal.printLine(firstmatrix[i]);
        }
Will nur kurz sehen, ob der String Array richtig gesplitted wurde, aber krieg eine ArrayOutOfBounds
Edit : Vergiss es. ich bin hohl
 
Z

zDieTaschenlampe

Weil args vermutlich nur Länge 1 oder 0 hat.
Ne hab vergessen arg[1] zu args[0] zu ändern fürs testen, aber ich seh dennoch immernoch nicht, wie ich jetzt aus diesem String mein Matrix bzw mein int[][] erstellen kann

Edit: Wie komme ich auf die Spalten ? Und wie setzt ich dann die Werte von meinem String ins Matrixarray :
Code:
String[] firstmatrix = args[0].split(";");
        int[firstmatrix.length][] firstmatrix= ...... // Wie ?
 
Zuletzt bearbeitet:
Z

zDieTaschenlampe

Ich denke ich hab etwas fast, aber selbst wenn das meine Lösung sein sollte, sieht es ziemlich hässlich aus xD

Code:
String[] firstmatrix = args[0].split(";");
        String[] rowNumbers;
        int[] row = new int[rowNumbers.length];
      
        for(int i=0; i< firstmatrix.length; i++) {
          
        rowNumbers = firstmatrix[i].split(",");
      
        }
      
        for(int i=0; i< rowNumbers.length; i++) {
          
            row[i] = Integer.parseInt(rowNumbers[i]);
          
            }
    
        int[firstmatrix.length][rowNumbers.length] firstmatrix = new int{ row};
Weiß nur leider am Ende nicht, wie ich nun die Werte an meine Matrix übergeb, also wie initialisiere ich das int[][] ding? Hab ja mein String in ein int [] geparst und joa /: diese Werte brauch ich nun noch übergeben, aber so oder so schön ist das nicht

Edit: Kann mich bitte wer aus meine Misere befreien. Der gepostete Code ist auch Müll -.-
 
Zuletzt bearbeitet:
Z

zDieTaschenlampe

Wobei ich brauch doch noch ein mal Hilfe. Ich hab jetzt 2 mal eine toString Methode geschrieben. Die eine ist hier schon irgendwo mit dem Stringbuilder und die andere hier :

Code:
public String toString() {
        String str = "";
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[0].length; j++) {
                str += matrix[i][j] + " ";
            }
            str += "\n";
        }
        return str;
    }
Diese Methode macht fast genau das, was sie auch tun soll. Also die Ausgabe an sich stimmt, aber es gibt eine unsichtbare Zeile am Ende zu viel aus. Wie krieg ich die raus ? Meine Idee war ein break beim "\n" miteinzubauen, aber ich weiß nicht wie, denn der break befehl soll nur beim letzten Schleifendurchlauf ziehen und den Zeilenumbruch überspringen
 
Z

zDieTaschenlampe

Wobei ich brauch doch noch ein mal Hilfe. Ich hab jetzt 2 mal eine toString Methode geschrieben. Die eine ist hier schon irgendwo mit dem Stringbuilder und die andere hier :

Code:
public String toString() {
        String str = "";
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[0].length; j++) {
                str += matrix[i][j] + " ";
            }
            str += "\n";
        }
        return str;
    }
Diese Methode macht fast genau das, was sie auch tun soll. Also die Ausgabe an sich stimmt, aber es gibt eine unsichtbare Zeile am Ende zu viel aus. Wie krieg ich die raus ? Meine Idee war ein break beim "\n" miteinzubauen, aber ich weiß nicht wie, denn der break befehl soll nur beim letzten Schleifendurchlauf ziehen und den Zeilenumbruch überspringen
Edit: Wenn ich Beiträge löschen könnte, würde ich es, aber manchmal tuts auspobieren und brainstormen auch. Habs und sorry, dass ich nerve
 
Thema: 

Matrix Klasse mit Mehrdimensionalen Array (Addition, Multiplikation, to String)

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben