Matriz Java

Boa tarde, sou novo aqui, me desculpe qualquer coisa, mais gostaria da seguinte ajuda, eu fiz esse código:

public static void main(String[] args) {
    int numero = 0;
    while (numero <= 0) {
        String str = "Número de candidatos:";
        str = JOptionPane.showInputDialog(null, str);
        if (str == null) {
            System.exit(0);
        }
        numero = Integer.parseInt(str);
        numero = numero - 1;
    }
    String str = "";
    String candidatos[][] = new String[numero][2];
    for (int i = 1; i <= candidatos.length; i++) {
        while (true) {
            str = "candidato " + i;
            str = JOptionPane.showInputDialog(null, str);
            if (str == null) {
                break;
            }
            str = str.trim();
            if (str.length() >= 2 && str.length() <= 50) {
                candidatos[i - 1][0] = str;
                break;
            }
        }
        if (str == null) {
            break;
        }
        while (true) {
            char[] caracteres = new char[]{'0', '1', '2', '3', '4', '5', '6', '7',
                '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
                'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};

            String senha = "";
            Random rdm = new Random();
            for (int cont = 0; i <= 8; i++) {
                senha += caracteres[rdm.nextInt(36)];

            }candidatos[i - 1][1] = senha;
                        
        }
    }
    String resultado = "";
    for (int i = 0; i <= candidatos.length; i++) {
        for (int l = 0; l <= candidatos[i].length; l++) {
            resultado = resultado + candidatos[i][l];
        }
        JOptionPane.showMessageDialog(null, resultado);
    }

}

}

porém ele esta dando nessa parte “candidatos[i - 1][1] = senha;” quando eu rodo, alguém saberia de dizer pq? ou como arrumar?desde já mt obrigado

for (int cont = 0; i <= 8; i++) {//vc criou a variavel 'cont' mas está tentanto aumentar a variavel 'i', que nao existe  (em i++)
                senha += caracteres[rdm.nextInt(36)];

            }candidatos[i - 1][1] = senha; //variavel 'i' continua não existindo, pq vc criou com o nome 'cont', mas mesmo assim essa linha está fora do escopo da variavel 'cont'

tente assim:

for (int cont = 0; cont <= 8; cont++) { //o nome da variavel como 'cont'
                senha += caracteres[rdm.nextInt(36)];

            candidatos[cont - 1][1] = senha;//as variaveis chamadas 'cont' (ainda dentro do for)
} //só aqui acaba o for

ou assim:

for (int i = 0; i <= 8; i++) { //for (int i) em vez de for (int cont)
                senha += caracteres[rdm.nextInt(36)];

            candidatos[i - 1][1] = senha;//a variavel 'i' agora EXISTE, pq vc criou (int i) e não (int cont) (ainda dentro do for)
}//só aqui acaba o for

obrigado, dei uma nova olhando no codigo arrumando esses detalhes e agora esta assim,
public class Exercicio0904 {

public static void main(String[] args) {
    int numero = 0;
    while (numero <= 0) {
        String str = "Número de candidatos:";
        str = JOptionPane.showInputDialog(null, str);
        if (str == null) {
            System.exit(0);
        }
        numero = Integer.parseInt(str);
        numero = numero - 1;
    }
    String str = "";
    String candidatos[][] = new String[numero][2];
    for (int cont = 1; cont <= candidatos.length; cont++) {
        while (true) {
            str = "candidato " + cont;
            str = JOptionPane.showInputDialog(null, str);
            if (str == null) {
                break;
            }
            str = str.trim();
            if (str.length() >= 2 && str.length() <= 50) {
                candidatos[cont - 1][0] = str;
                break;
            }
        }
        if (str == null) {
            break;
        }
        while (true) {
            char[] caracteres = new char[]{'0', '1', '2', '3', '4', '5', '6', '7',
                '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
                'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};

            String senha = "";
            Random rdm = new Random();
            for (int i = 0; i <= 8; i++) {
                senha += caracteres[rdm.nextInt(36)];

            }candidatos[cont - 1][1] = senha;
                        
        }
    }
    String resultado = "";
    for (int i = 0; i <= candidatos.length; i++) {
        for (int l = 0; l <= candidatos[i].length; l++) {
            resultado = resultado + candidatos[i][l];
        }
        JOptionPane.showMessageDialog(null, resultado);
    }

}

}

porem quando executo logo apos entrar como o nome de um funcionário o netbenas fica status running… e n acontece mais nada :S

conseguir arruma, so ficou faltando um break; apos adicionar o valor a segunda célula da matiz, cara mt obrigado pela sua ajuda, fiquei horas tentando achar a solução e n vi esse pequeno vacilo, que falta de atenção a minha, nossa tenho um longo caminho a melhorar pela frente kkkkkkk, mais obrigado msm =D

que bom que funcionou :smiley:

mas por favor marque a resposta como solução

e também em vez de

for (int i = 0; i <= candidatos.length; i++) {

use:


for (int i = 0; i < candidatos.length; i++) {//troque '<=' por '<' quando for usar nomeDaVariavel.length

ok, mais uma vez obg e ja mudei e marquei como solução sua resposta :smile: