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.
Ich möchte eine Klassenmethode schreiben die mir für ein beliebiges n > 0 ein quadratisches zweifach geschachteltes Feld der Seitenlänge 2n+1 erzeugt und ein x-förmiges Muster aus den Zeichen # und + belegt.
das muster x mit der # habe ich, also die diagonale
ich bin nicht sicher, ob ich dich richtig verstanden habe. Was meinst du mit "den Rest einfügen"? Sollen '#' und '+' abwechselnd in das Array kommen oder wie hast du es dir vorgestellt?
Der von dir gepostete Code wird so nicht funktionieren. Du musst eine Instanz von char[][] erstellen. So hat das Ding, das du in Zeile 4 ansprichst, gar keinen Namen und das klappt nicht.
Kannst du damit was anfangen?
Java:
import java.util.Arrays;
public class Arraymuster {
public static void main(String[] args) {
char[][] c = muster(5);
for(int i = 0; i < c.length; i++) {
System.out.println(Arrays.toString(c[i]));
}
}
public static char[][] muster(int laenge) {
char[][] musterArray = new char[laenge][laenge];
boolean isPlus = false;
for(int i = 0; i < musterArray.length; i++) {
for(int j = 0; j < musterArray[i].length; j++) {
if(isPlus) {
musterArray[i][j] = '+';
} else {
musterArray[i][j] = '#';
}
isPlus = !isPlus;
}
}
return musterArray;
}
}
da ich gerade lust dazu hatte...^^
evtl. kennt jemand ja einen geschickteren Weg, wie man bspw. es schafft in einem Schleifendurchgang.
Optimal ist meiner auf gar keinen Fall...aber er funktioniert.
Java:
import java.util.Arrays;
public class Arraymuster {
public static void main(String[] args) {
// Variable "n"
int n = 4;
// "Konstante" in Abhängigkeit von "n"
int laenge = n * 2 + 1;
char[][] c = new char[laenge][laenge];
fuelleXMuster(laenge, c);
fuelleRest(laenge, c);
for (int i = 0; i < c.length; i++) {
System.out.println(Arrays.toString(c[i]));
}
}
private static void fuelleRest(int laenge, char[][] c) {
for (int i = 0; i < laenge; i++) {
for (int j = 0; j < laenge; j++) {
if (c[i][j] != '#') {
c[i][j] = '+';
}
}
}
}
private static void fuelleXMuster(int laenge, char[][] c) {
int plusIndexReihe = 0;
int plusIndexSpalte = 0;
int minusIndexSpalte = laenge - 1;
for (int i = 0; i < laenge; i++) {
for (int j = 0; j < laenge; j++) {
if (i == plusIndexSpalte && j == plusIndexReihe) {
c[i][j] = '#';
plusIndexSpalte++;
}
if (i == plusIndexReihe && j == minusIndexSpalte) {
c[i][j] = '#';
minusIndexSpalte--;
}
}
plusIndexReihe++;
}
}
}