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?
publicstaticvoidmain(String[]args){Scannerscan=newScanner(System.in);System.out.println("Enter The Number Of Matrix Rows ");intmatrixRow=scan.nextInt();System.out.println("Enter The Number Of Matrix Columns: ");intmatrixCol=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=newint[matrixRow][matrixCol];for(charch='A';ch<matrixRow;ch++){for(charch1=matrixRow;ch1=matrixCol;ch1--){}}for(inti=0;i<matrixRow;i++){for(intj=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 */packagetemporario;importjava.util.Scanner;publicclassZ{publicstaticvoidmain(String[]args){Scannerscan=newScanner(System.in);Stringalfabeto="ABCDEFGHIJKLMNOPQRSTUVXWYZ";charvetorAlfabeto[]=alfabeto.toCharArray();System.out.println("Enter The Number Of Matrix Rows ");intmatrixRow=scan.nextInt();System.out.println("Enter The Number Of Matrix Columns: ");intmatrixCol=scan.nextInt();intcontAlfabeto=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=newchar[matrixRow][matrixCol];for(inti=0;i<matrixRow;i++){for(intj=0;j<matrixRow;j++){matrix[i][j]=' ';}}for(inti=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(inti=0;i<matrixCol;i++){matrix[contMatrizLinha][i]=vetorAlfabeto[contAlfabeto];contAlfabeto++;if(contAlfabeto==26){contAlfabeto=0;}}for(inti=0;i<matrixRow;i++){for(intj=0;j<matrixCol;j++){System.out.print(matrix[i][j]+" ");}System.out.println();}}}
Só executar que já está tudo testado
H
Heitor_Veloso
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.
H
Heitor_Veloso
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.
J
Juliosk
Muito obrigado cara! Salvou minha dúvida!
J
Juliosk
Você poderia me explicar essa linha? Agora bateu uma dúvida se entendi essa parte mesmo.
H
Heitor_Veloso
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.