Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo Javaner
Lerne momentan Java und habe da so paar Probleme..
Es geht um folgenden Code:
Java:
public class Main{
public static void main() {
char[] dasAlphabet = new char[26];
char[][] alphaFeld = new char[26][26];
char c;
int maxChar = 26, i, j;
for(c = 'a', i = 0; c <= 'z';)
dasAlphabet[i++] = c++;
for (i = 0; i < maxChar; i++)
for (j = 0; j < maxChar; j++)
alphaFeld[i][j] = dasAlphabet[(i+j)%maxChar];
}
}
Ich möchte eine Ausgabe bei der es nach 26 Zeichen einen Zeilenumbruch gibt.. So in etwa:
abcdefghijklmnopqrstuvwxyz
bcdefghijklmnopqrstuvwxyza
cdefghijklmnopqrstuvwxyzab
usw.
Ich versuche mich schon den ganzen Tag daran durch einfaches ausprobieren.. Der Code oben ist aus einer Vorlesungsfolie aus der Uni. Bin noch relativ blutiger Anfänger.
Hatte auch einige Ausgaben, die der meiner gewünschten ähnelten -> mit diesem Code:
Allerdings wurde das Ergebnis verfälscht(Buchstaben wurden verschluckt)
Java:
public class Main{
public static void main() {
char[] dasAlphabet = new char[26];
char[][] alphaFeld = new char[26][26];
char c;
int maxChar = 26, i, j;
for(c = 'a', i = 0; c <= 'z';)
dasAlphabet[i++] = c++;
for (i = 0; i < maxChar; i++)
for (j = 0; j < maxChar; j++){
System.out.print( alphaFeld[i][j] = dasAlphabet[(i+j)%maxChar]);
if(j % maxChar == 0)
System.out.print("\n");
}
}
}
Das Programm, das ich benutze ist BlueJ. Mit Netbeans hab ich nur Probleme.. Bei der Klasse ist ist immer ein Ausreifezeichen, dessen Bedeutung ich nicht kenne. Bild: 2darrayj9x67.jpg - abload.de
Das Problem ist einfach, der Zeilenumbruch an der falschen Stelle ist. Für j = 0 gilt auch j % maxChar == 0 und damit macht er nach dem a den Zeilenumbruch.
So sollte es stimmen:
Java:
public class Main {
public static void main(String[] args) {
char[] dasAlphabet = new char[26];
char[][] alphaFeld = new char[26][26];
char c;
int maxChar = 26, i, j;
for (c = 'a', i = 0; c <= 'z';)
dasAlphabet[i++] = c++;
for (i = 0; i < maxChar; i++){
for (j = 0; j < maxChar; j++) {
System.out.print(alphaFeld[i][j] = dasAlphabet[(i + j)
% maxChar]);
}
System.out.print("\n");
}
}
}
Dankee^^
Wäre nicht draufgekommen einfach "\n" auszudrucken
Lag aber auch daran, dass nach den letzten beiden for-Schleifen keine geschweiften Klammern aufgemacht wurden.. Dumme Vorlesungsfolie.. Klappt aber auch ohne String[] args als Parameter bei der Methode.
Ich habe scheinbar das "%maxChar" oder "%26" in dieser Zeile:
fehlinterepretiert. Dadurch werden wohl die Zeilen/Spalten auf 26 bzw. 25(wenn man 0 als 1zählt)
beschränkt, passender kann ich die Arbeit des modulo Operators in der Zeile da nicht beschreiben.