Was könnte bei folgenden Methoden falsch sein?

Windows10

Bekanntes Mitglied
Ich will nicht das ihr die folgenden Aufgaben für mich löst, sondern mir Tipps gebt wo in meinem Code ein Fehler sein kann!!

Methode: char[][] getPolybiusMatrix
Aufgabe: Sollte mit den Buchstaben (siehe Bildanhang) gefüllt werden!
Java:
public static char[][] getPolybiusMatrix()
    {
        char[][]polybiusmatrix=new char[5][5];
        char c='A';
        for( c='A'; c<polybiusmatrix.length;c++)
        {
            for(char c2=c;c2<polybiusmatrix[c].length;c2++)
            {
                Out.print(polybiusmatrix[c][c2]);
                c2=(char)(c+1);
                if(c=='I')
                {
                    Out.println("I/J");
                }
            }
            Out.println();
        }
        Out.println(polybiusmatrix);
        return polybiusmatrix;
    }

Methode: String readText()
Aufgabe: Liest den zu verschlüsselten Text aus einer Datei. Dabei sind alle Leerzeichen Satz-und Sonderzeichen zu entfernen, sowie die Umlaute ß und J entsprechend zu ersetzen.
Java:
public static String readText(String filename)
    {
        In.open(filename);
        while(In.done())
        {
            String line=In.readString();
            Out.println(line);
            return line;
        }
        In.close();
        return "";
    }

Methode: void printTextSeparated(String text)
Aufgabe: Gibt den Text mit zwei Leerzeichen zwischen dem Text aus
Java:
public static void printTextSeparated(String text)
    {
        Out.println("Text: "+text);
    }

Methode: int[]transformToCode(String text, char[][]matrix)
Aufgabe: wandelt den Text in ein int-Array um
Java:
public static int[] transformToCode(String text, char[][]matrix)
    {
        int[]code=new int[matrix.length];
        for(int i=0; i<code.length;i++)
        {
            Out.println(code[i]);
        }
        return code;
    }

Methode: void printCode(int[]code)
Aufgabe: Gibt das int-Array aus
Java:
 public static void printCode(int []code)
    {
        Out.print(code);
    }
 

Anhänge

  • d.PNG
    d.PNG
    19 KB · Aufrufe: 18

Meniskusschaden

Top Contributor
Da sind noch einige Fehler enthalten bzw. in manchen Methoden ist einfach noch gar nichts zur Problemlösung programmiert. Was ist denn aktuell dein konkretes Problem? Oder anders gefragt: Warum glaubst du, noch nicht fertig zu sein?
 

Windows10

Bekanntes Mitglied
Da sind noch einige Fehler enthalten bzw. in manchen Methoden ist einfach noch gar nichts zur Problemlösung programmiert. Was ist denn aktuell dein konkretes Problem? Oder anders gefragt: Warum glaubst du, noch nicht fertig zu sein?
Mein aktuelles Problem ist, das es mir in der Methode char[][]getPolybusMatrix() das Array einfach nicht befüllen will!! Welche Methoden sind fehlerfrei?
 

Meniskusschaden

Top Contributor
Was ist deine Erwartungshaltung an diese for-Schleife:for( c='A'; c<polybiusmatrix.length;c++)? Aktuell versuchst du, sie solange zu durchlaufen, wie die char-Variable c einen Wert enthält, der kleiner als die Array-Länge ist. Im ersten Durchlauf wird also geprüft, ob der Buchstabe A kleiner als 5 ist.
EDIT: genauer gesagt wird geprüft, ob der ASCII-Code des Buchstaben A kleiner als 5 ist.
 

Windows10

Bekanntes Mitglied
Was ist deine Erwartungshaltung an diese for-Schleife:for( c='A'; c<polybiusmatrix.length;c++)? Aktuell versuchst du, sie solange zu durchlaufen, wie die char-Variable c einen Wert enthält, der kleiner als die Array-Länge ist. Im ersten Durchlauf wird also geprüft, ob der Buchstabe A kleiner als 5 ist.
EDIT: genauer gesagt wird geprüft, ob der ASCII-Code des Buchstaben A kleiner als 5 ist.
Wie kann man diesen Fehler beheben? Es sollte das Alphabet ausgegeben werden!!! I und J an der gleichen Stelle!!
 

Meniskusschaden

Top Contributor
Du kannst beispielsweise zwei for-Schleifen mit je 5 Iterationen verschachteln (äußere Schleife für die Zeilennummer, innere für die Spaltennummer). Außerdem benötigst du eine char-Variable, die du vor Schleifenbeginn mit 'A' initialisierst und bei jedem inneren Schleifendurchlauf inkrementierst (Sonderbehandlung für 'J'). Dann hast du in der inneren Schleife Zeilennummer, Spaltennummer und passenden Buchstaben zur Verfügung, um die entsprechende Matrixzelle korrekt zu füllen.
 

Windows10

Bekanntes Mitglied
Du kannst beispielsweise zwei for-Schleifen mit je 5 Iterationen verschachteln (äußere Schleife für die Zeilennummer, innere für die Spaltennummer). Außerdem benötigst du eine char-Variable, die du vor Schleifenbeginn mit 'A' initialisierst und bei jedem inneren Schleifendurchlauf inkrementierst (Sonderbehandlung für 'J'). Dann hast du in der inneren Schleife Zeilennummer, Spaltennummer und passenden Buchstaben zur Verfügung, um die entsprechende Matrixzelle korrekt zu füllen.
Ist folgende Methode besser?
Java:
 public static char[][] getPolybiusMatrix()
    {
        char[][]polybiusmatrix=new char[5][5]; 
        for( int i=0; i<polybiusmatrix.length;i++)
        {
            for(int j=0;j<polybiusmatrix[i].length;j++)
            {
                char buchstabe='A';
                Out.print(polybiusmatrix[i][j]+buchstabe);
                if(buchstabe=='I')
                {
                    char buchstabe1='I';
                    char buchstabe2='J';
                    Out.print(buchstabe1+"/"+buchstabe2);
                }   
                buchstabe++;
            }
            Out.println();
        }
        Out.println(polybiusmatrix);
        return polybiusmatrix;
    }

Mit diesem Code wird es aber auch noch nicht befüllt!!
 

Meniskusschaden

Top Contributor
Du initialisierst buchstabe bei jedem Schleifendurchlauf neu mit 'A'. Das solltest du besser vor der Schleife machen, denn sonst nützt es ja nichts, dass du buchstabe inkrementierst. Ausserdem füllst du die Matrix noch nicht, deshalb ist die folgende Ausgabe nicht sinnvoll:
Java:
Out.print(polybiusmatrix[i][j]+buchstabe);
Zur ersten Kontrolle würde ich hier nur folgendes ausgeben, damit du besser siehst, was passiert:
Java:
Out.print(buchstabe);
Allerdings kenne ich die Klasse Out nicht. Die kommt vermutlich vom Dozenten.
 

Neue Themen


Oben