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.