2D Array

Status
Niet open voor verdere reacties.

hanonymouss

Gebruiker
Lid geworden
7 sep 2011
Berichten
283
Beste Leden

Ik ben nieuw met java en zou graag wille proberen sterretje af te printen met daarin welkom.

HTML:
***************************
                          *
         welkom           *
***************************

ik gebruik deze code en het werkt niet:

[CPP]private static final int KOLOMMEN = 72;
private static final int RIJEN = 5;
private static final String WELKOM = "WELKOM";
private char[][] teken =
new char[KOLOMMEN][RIJEN];

public Menu() {

}

public void toonMenu() {

for (int k = 0; k < KOLOMMEN; k++) {

for(int r = 0; r < RIJEN; r++){
System.out.println(this.teken[k][r] = '*');
}

}

}[/CPP]
 
Iets als:

[cpp]
final int K = 72;
final int R = 5;
char[][] teken = new char[R][K];
for (int i = 0; i < R; i++) {
if (i == 0 || i == R-1) {
Arrays.fill(teken, '*');
} else {
Arrays.fill(teken, ' ');
}
teken[0] = '*';
teken[K-1] = '*';
}

String text = "welkom";
int doelrij = R/2;
for (int i = K/2 - text.length()/2, j = 0; j < text.length(); j++) {
teken[doelrij][i+j] = text.charAt(j);
}

for (char[] ca : teken) {
System.out.println(ca);
}
[/cpp]

Code is wel heel snel in elkaar gezet gezien ik nu weg moet.
 
Bedankt cod_nl het werkt perfect :D

Ik heb de code onder String tekenkad(); gezet en ik wil graag dat de kader terug geeft als string zonder gebruik te maken van system.out.prinln(ca); die ik later in mijn main classe wil aanroepen

[CPP] String Output;
for (char[] ca : teken)
Output=(ca);
Return Output;
}[/CPP]

Maar het werkt blijkbaar niet. De melding die ik krijg is require a string found chat

Hoe los ik dit op alvast bedankt
 
Iets als het onderstaande zou moeten werken:

[cpp]
String output = "";
for (char[] ca : teken) {
output += new String(ca) + "\n";
}
[/cpp]

edit:

Eigenlijk heb je de 2d array en for-each niet nodig als je het resultaat enkel wilt opslaan in een string. Daarvoor zou je ook iets als het onderstaande kunnen schrijven:

[cpp]
private static String tekenkad(final int R, final int K, final String T) throws IllegalArgumentException {
if (R <= 2 || K <= 3) {
throw new IllegalArgumentException("bla bla");
}
if (T.length() > K) {
throw new IllegalArgumentException("bla bla");
}

String output = "";
final char[] charArray = new char[K];

for (int i = 0; i < R; i++) {
Arrays.fill(charArray, (i == 0 || i == R - 1 ? '*' : ' '));
charArray[0] = charArray[K - 1] = '*';

if (i == R / 2) {
for (int j = K / 2 - T.length() / 2, k = 0; k < T.length(); k++) {
charArray[j + k] = T.charAt(k);
}
}

output += new String(charArray) + "\n";
}

return output;
}
[/cpp]
 
Laatst bewerkt:
Ik ben u heel dankbaar cod_nl het werkt perfect

Is het dan ook mogelijk om meer strings in een 2d array te doen [1] New file
Settings
[2] open file
[3] delete file
Advanced
[4] decrypt
[5] encrypt
[6] default
Help
[7] manual
[8] how to

Zoals je ziet staan de tekst op een andere positie dus niet in het midden.
Met daar rond die kadertje

Die cijfers moet de gebruiker ook aan kunnen dus als de persoon 1 drukt dat er ineens een melding komt "you choice nummer one"

Ik weet dat je dat kunt doen met switch case maar hoe ik de strings kan benaderen in een 2array weet ik niet
Als je een oplossing weet graag hoor ik het van u of van iemand anders
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan