Desenvolvi uma matriz em char com n colunas e n linhas com caracteres de A á Z, e ao atingir Z pode-se inciar com A de novo. Mas queria modelar minha matriz em formato de ‘Z’ .
public static void main(String[] args) {
char lol = 'A';
Scanner imprint = new Scanner(System.in);
System.out.print("Digite a letra: ");
int n = imprint.nextInt();
char matriz[][] = new char[n][n];
for (int x = 0; x < n; x++) {
for (int y = 0; y < n; y++) {
matriz[x][y] = lol;
lol++;
System.out.print(matriz[x][y]);
if (lol == '[') {
lol = 'A';
if (x == 0|| x == n - 1 ||y == n - 1000 - x) {
System.out.println();
}
}
}
System.out.println();
}
}
Se voce tem certeza que a matriz eh quadrada, fica mais facil (basta ver se a soma do indice de linha e coluna eh igual aa metadate do total de linhas e colunas). Se precisar escalar, o mais facil eh converter para porcentagem (ou outra base comum, como 10):
/**
* @author itamar
*/
public class ZShape {
public static final int ROWS = 10;
public static final int COLS = 10;
private char[][] array = new char[ROWS][COLS];
private boolean shouldPrintChar(int row, int col) {
if (row == 0 || row == ROWS - 1) { // First and last row
return true;
}
// If you're sure it's a square, this is simpler:
// return (row + col) == ((ROWS + COLS) / 2) - 1;
// This will scale properly
return col * 10 / COLS + row * 10 / ROWS == 9; // 9 because it is zero-based
}
private void generate() {
char c = 'A';
for (int row = 0; row < ROWS; row++) {
for (int col = 0; col < COLS; col++) {
array[row][col] = shouldPrintChar(row, col) ? c++ : ' ';
if (c > 'Z') c = 'A';
}
}
}
private void print() {
for (char[] row : array) {
System.out.println(new String(row));
}
}
public static void main(String... args) {
ZShape zShape = new ZShape();
zShape.generate();
zShape.print();
}
}