Wie wäre es mit so etwas:
for (int row = 0; row < 3; row ++)
for (int col = 0; col < 3; col++)
table[row][col] = (char) ('1' + row * 3 + col);
Das folgende vollständige Java-Programm:
class Test {
public static void main(String[] args) {
char[][] table = new char[3][3];
for (int row = 0; row < 3; row ++)
for (int col = 0; col < 3; col++)
table[row][col] = (char) ('1' + row * 3 + col);
for (int row = 0; row < 3; row ++)
for (int col = 0; col < 3; col++)
System.out.println (table[row][col]);
}
}
Ausgänge:
1
2
3
4
5
6
7
8
9
Dies funktioniert, weil die Ziffern in Unicode ab \ u0030 (von denen Sie erhalten '0'
) aufeinanderfolgend sind .
Der Ausdruck '1' + row * 3 + col
(wo Sie variieren row
und col
zwischen 0
und 2
einschließlich) gibt Ihnen einfach einen Charakter von 1
bis 9
.
Dies gibt Ihnen natürlich nicht den Charakter 10
(da dies zwei Zeichen sind), wenn Sie weiter gehen, aber es funktioniert gut für den 3x3-Fall. Sie müssten die Methode zum Generieren des Array-Inhalts an diesem Punkt ändern, z. B.:
String[][] table = new String[5][5];
for (int row = 0; row < 5; row ++)
for (int col = 0; col < 5; col++)
table[row][col] = String.format("%d", row * 5 + col + 1);
Der kürzere Weg ist wie folgt:
private char[][] table = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}};
quelle
Einfach zu lesen / zu tippen.
table = new char[][] { "0123456789".toCharArray() , "abcdefghij".toCharArray() };
quelle
Sie können for-Schleife verwenden, wenn Sie wirklich wollen.
char table[][] table = new char[row][col]; for(int i = 0; i < row * col ; ++i){ table[i/row][i % col] = char('a' + (i+1)); }
oder mach was bhesh gesagt hat.
quelle
Sie können folgen, was paxdiablo (am 12. Dezember) für einen automatisierten, vielseitigeren Ansatz vorgeschlagen hat:
for (int row = 0; row < 3; row ++) for (int col = 0; col < 3; col++) table[row][col] = (char) ('1' + row * 3 + col);
In Bezug auf die Effizienz hängt es vom Umfang Ihrer Implementierung ab. Wenn ein 2D-Array einfach auf die Werte 0 bis 9 initialisiert werden soll, ist es viel einfacher, es einfach innerhalb derselben Anweisung wie folgt zu definieren, zu deklarieren und zu initialisieren:
private char[][] table = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}};
Wenn Sie den Algorithmus erweitern möchten, ist der vorherige Code effizienter.
quelle