Sou iniciante no java, tenho uma trabalho para fazer e necessita do programa percorrer todas as diagonais de uma matriz, ja tentei fazer mas não consigo, alguem pode me ajudar como fazer?
todas as diagonais no caso, a principal ae secudaria?
Posta o código que tu já fez que te ajudo sem problemas. blz
Tanto a principal e a secundaria e todas abaixo e acima delas
import java.util.Scanner;
public class ProgramaCacaPalavra {
public static void main(String[] args) {
Scanner read = new Scanner(System.in);
//cria uma matriz chamando a funcao recuperaMatriz() com parametros da localizacao do arquivos matriz.txt
char[][] matriz = LeitorMatriz.recuperaMatriz("matriz.txt");
int p=-1;
while(p!=2){
imprimeMatriz(matriz);
System.out.print("Informe qual palavra você encontrou? ");
String palavra = read.next();
palavra=palavra.toUpperCase();
percorrerMatrizHorizontal(matriz,palavra);
percorrerMatrizVertical(matriz, palavra);
percorrerMatrizDiagonal(matriz, palavra);
System.out.print("\nDeseja executar novamente? (1-SIM / 2-NÃO) ");
p=read.nextInt();
while(p!=1 && p!=2){
if (p!=1 && p!=2) {
System.out.println("Digitou errada! Digite novamente");
break;
}
}
}
}
static void imprimeMatriz(char[][] matriz){
//imprime a matriz na tela
for (int i = 0; i < matriz.length; i++) {
for (int j = 0; j < matriz[i].length; j++) {
System.out.print("");
System.out.print("|"+matriz[i][j]+"|");
}
System.out.println("");
}
System.out.println("");
}
static void percorrerMatrizHorizontal(char[][] matriz, String palavra){
String PalavraVetor="";
for (int i = 0; i < matriz.length; i++) {
PalavraVetor="";//LIMPA A VARIAVEL PARA COMEÇAR NOVAMENTE
for (int j = 0; j < matriz[i].length; j++) {
PalavraVetor=PalavraVetor+matriz[i][j];//CONCATENAÇÃO DOS CARACTERES
}
if (PalavraVetor.contains(palavra)) {//VERIFICA SE A PALAVRA INFORMADA PELO USUARIO EXISTE NA STRING
String caract = palavra.substring(0,2);//PEGA OS CARACTERES ENTRE AS POSIÇÕES DEFINIDAS
int comeca = PalavraVetor.indexOf(caract);//PROCURA NA PALAVRAVETOR A PRIMEIRA LETRA DA PALAVRA
int termina = (comeca+palavra.length())-1;
System.out.format("A palavra %s, comeca na coluna %s e termina na coluna %s da linha %s \n",palavra,comeca,termina,i);
}else{
StringBuilder str = new StringBuilder(PalavraVetor);
PalavraVetor=str.reverse().toString();//INVERTO A STRING COM A FUNCAO REVERSE() DO STRINGBUILDER
if (PalavraVetor.contains(palavra)) {
String caract = palavra.substring(0,2);//VERIFICA SE A PALAVRA INFORMADA PELO USUARIO EXISTE NA STRING
int termina = PalavraVetor.length()-PalavraVetor.indexOf(caract)-1;//PROCURA NA PALAVRAVETOR A PRIMEIRA LETRA DA PALAVRA
int comeca = (termina-palavra.length())+1;
System.out.format("A palavra %s, comeca na coluna %s e termina na coluna %s da linha %s \n",palavra,comeca,termina,i);
}
}
}
}
static void percorrerMatrizVertical(char[][] matriz, String palavra){
String PalavraVetor="";
for (int j = 0; j < matriz[0].length; j++) {
PalavraVetor="";
for (int i = 0; i < matriz.length; i++) {
PalavraVetor=PalavraVetor+matriz[i][j];
}
if (PalavraVetor.contains(palavra)) {//VERIFICA SE A PALAVRA INFORMADA PELO USUARIO EXISTE NA STRING
String caract = palavra.substring(0,2);//PEGA OS CARACTERES ENTRE AS POSIÇÕES DEFINIDAS
int comeca = PalavraVetor.indexOf(caract);//PROCURA NA PALAVRAVETOR AS PRIMEIRAS LETRAS DA PALAVRA
int termina = (comeca+palavra.length())-1;
System.out.format("A palavra %s, comeca na linha %s e termina na linha %s da coluna %s \n",palavra,comeca,termina,j);
}else{
StringBuilder str = new StringBuilder(PalavraVetor);
PalavraVetor=str.reverse().toString();//INVERTO A STRING COM A FUNCAO REVERSE() DO STRINGBUILDER
if (PalavraVetor.contains(palavra)) {//VERIFICA SE A PALAVRA INFORMADA PELO USUARIO EXISTE NA STRING
String caract = palavra.substring(0,2);//INVERTO A STRING COM A FUNCAO REVERSE() DO STRINGBUILDER
int termina = PalavraVetor.length()-PalavraVetor.indexOf(caract)-1;//PROCURA NA PALAVRAVETOR A PRIMEIRA LETRA DA PALAVRA
int comeca = (termina-palavra.length()+1);
System.out.format("A palavra %s, comeca na linha %s e termina na linha %s da coluna %s \n",palavra,comeca,termina,j);
}
}
}
}
static void percorrerMatrizDiagonal(char[][] matriz, String palavra){
String PalavraVetor="";
String pal="";
int p=0;
int o=0;
for (int con = 0; con < matriz.length; con++) {
for (int i = 0; i < matriz.length; i++) {
PalavraVetor="";
for (int j = 0; j < matriz[i].length; j++) {
if (i==j+con) {
PalavraVetor=String.valueOf(matriz[i][j]);
}
}
pal=pal+PalavraVetor;
//System.out.println(pal);
//if (pal.length()==matriz[i].length) {
if (pal.contains(palavra)) {
String caract = palavra.substring(0,2);//PEGA OS CARACTERES ENTRE AS POSIÇÕES DEFINIDAS
int comeca = pal.indexOf(caract);//PROCURA NA PALAVRAVETOR AS PRIMEIRAS LETRAS DA PALAVRA
int termina = (comeca+palavra.length())-1;
System.out.format("A palavra %s, comeca na linha %s e termina na linha %s da coluna %s ate a coluna %s \n",palavra,comeca,termina,o,p);
pal="";
break;
}
//pal="";
//}
}
//System.out.println(pal);
if (pal.contains(palavra)) {
break;
}
}
}
}