Quadrado em forma de “Z” com array

0
votar contra
favorita
Estou tentando fazer um algortimo em java para apresentar uma sequência de letras dispostas em formato de “Z”. Caso o alfabeto acabe,volte para o A e continue até acabar a matriz. Estou realmente perdido em relação a matriz. Alguém poderia de ajudar?

Um exemplo do que preciso fazer:

package Learning;

import java.util.Scanner;

public class Z {

public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);

    System.out.println("Enter The Number Of Matrix Rows ");
    int matrixRow = scan.nextInt();
    System.out.println("Enter The Number Of Matrix Columns: ");
    int matrixCol = scan.nextInt();


    
    if (matrixRow > 50 && matrixCol > 50) {
        System.out.print("ERROR");
    }
    if (matrixRow != matrixCol) {
        System.out.print("ERROR");
    if (matrixRow <= 2 && matrixCol <= 2) {
        System.out.print(" ERROR");
    }

    
    int[][] matrix = new int[matrixRow][matrixCol];

    for (char ch = 'A'; ch < matrixRow; ch++) {
        for (char ch1=matrixRow; ch1=matrixCol;ch1--) {
            
            
        }
    }


    for (int i = 0; i < matrixRow; i++) {
        for (int j = 0; j < matrixCol; j++) {
            System.out.print(matrix[matrixRow][matrixCol] + "\t");
        }

        System.out.println();

    }
}

}

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */


/**
 *
 * @author Heitor
 */

package temporario;
import java.util.Scanner;

public class Z {

public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    String alfabeto = "ABCDEFGHIJKLMNOPQRSTUVXWYZ";
    char vetorAlfabeto[] = alfabeto.toCharArray();
    System.out.println("Enter The Number Of Matrix Rows ");
    int matrixRow = scan.nextInt();
    System.out.println("Enter The Number Of Matrix Columns: ");
    int matrixCol = scan.nextInt();
    int contAlfabeto=0,contMatrizLinha=1,contMatrizColuna=matrixCol-2;

    
    if (matrixRow > 50 && matrixCol > 50) {
        System.out.print("ERROR");
    }
    if (matrixRow != matrixCol) {
        System.out.print("ERROR");
    }
    if (matrixRow <= 2 && matrixCol <= 2) {
        System.out.print(" ERROR");
    }

    char[][] matrix = new char[matrixRow][matrixCol];
    for(int i=0;i<matrixRow;i++){
        for(int j=0;j<matrixRow;j++){
            matrix[i][j]=' ';
        }
    }
    for(int i=0;i<matrixCol;i++){
        matrix[0][i]=vetorAlfabeto[contAlfabeto];
        contAlfabeto++;
        if(contAlfabeto==26){
            contAlfabeto=0;
        }
    }
    for(;(contMatrizLinha+1)<matrixRow;contMatrizLinha++,contMatrizColuna--){
        matrix[contMatrizLinha][contMatrizColuna]=vetorAlfabeto[contAlfabeto];
        contAlfabeto++;
        if(contAlfabeto==26){
            contAlfabeto=0;
        }
    }
    contMatrizLinha=matrixRow-1;
    for(int i=0;i<matrixCol;i++){
        matrix[contMatrizLinha][i]=vetorAlfabeto[contAlfabeto];
        contAlfabeto++;
        if(contAlfabeto==26){
            contAlfabeto=0;
        }
    }
    for(int i=0;i<matrixRow;i++){
        for(int j=0;j<matrixCol;j++){
            System.out.print(matrix[i][j]+"   ");
        }
        System.out.println();
    }
}
}

Só executar que já está tudo testado

só pra avisar que meu alfabeto é com todas as 26 letras e parece que o exemplo do seu professor ele só usou o alfabeto com 24 letras, qualquer coisa é só você ir na variável alfabeto e mudar as letras para o alfabeto dele e depois trocar onde esta contAlfabeto==26 por contAlfabeto==24.

Faltou eu dar a explicação de como funciona, primeiro eu coloco todas as posições da matriz com o valor ’ ', depois como para formar o z apenas a primeira e ultima linha é inteira, eu percorro todas a linha adicionado a letra do alfabeto em cada posição da coluna da primeira linha, depois como para o z adiciona apenas uma letra por linha começando do fim da coluna, eu fiz um contador de linha que aumenta 1 a cada interação do for e um contador de coluna que diminui 1 a cada interação do for, até chegar na penúltima linha e por fim faço a mesma coisa do for da primeira linha apenas mudando da linha 1 para a ultima linha. o if do alfabeto é para verificar se chegou na ultima letra do alfabeto e se tiver chegado ele volta a primeira letra.

Muito obrigado cara! Salvou minha dúvida!

Você poderia me explicar essa linha? Agora bateu uma dúvida se entendi essa parte mesmo.

a estrutura For tem 3 opções, a primeira instanciar variável(dar valor inicial a uma variável), a segunda é uma operação lógica e a terceira é para incrementar valores a variáveis, sendo as 3 separadas pelo ;. Apenas a segunda opção do for é obrigatória, que é a da operação lógica para que tenha a possibilidade de sair dessa estrutura de repetição. Como no inicio do programa eu já havia declarado valor para contMatrizLinha e contMatrizColuna eu não usei a primeira parte do For, depois eu coloquei como condição de saída a penúltima linha da matriz, e então eu aumentava o número da linha da matriz em cada iteração e diminuía a da coluna, pois para fazer o z as linhas do meio vão de forma sequencial começando do fim da coluna e inicio da linha e vai até o fim da linha e inicio da coluna.

muito obrigado!!