Exceções

3 respostas
mxajd

Olá a tds!

estou escrevendo um exercício que faz parte de uma classe de cadastro de alunos.
public class MainAluno {

    public static void main(String[] args) {

        int opccao = Integer.parseInt(JOptionPane.showInputDialog(null, "Que "
                + "tipo de Aluno quer criar?\n * 1) Interno \t2) Transferido *"));

        switch (opccao) {
            case 1:

                boolean dadosCorrectos = false;
                String nomeI = "",
                 apelidoI = "";
                int anoI = 0,
                 anoCursoI = 0;
                do {
                    try {
                        nomeI = JOptionPane.showInputDialog("Nome do aluno:");
                        for (int i = 0; i < nomeI.length(); i++) {
                            if (nomeI.charAt(i) >= '0'
                                    && nomeI.charAt(i) <= '9') {
                                JOptionPane.showMessageDialog(null, "Desta "
                                        + "deixo passar, ma olha que eu sei "
                                        + "k 1 nome não tem números!!");
                                dadosCorrectos = false;
                                break;
                            }
                        }
                        apelidoI = JOptionPane.showInputDialog("Apelido "
                                + "do aluno:");
                        anoI = Integer.parseInt(JOptionPane.showInputDialog(""
                                + "Ano de Inscrição de " + nomeI));
                        anoCursoI = Integer.parseInt(JOptionPane.showInputDialog("Ano de Curso de " + nomeI));
                    } /*como faço para apanhar excepções IO, para k nome != #*/ //                    catch (IOException) {
                    //                    } 
                    catch (NumberFormatException e) {
                        JOptionPane.showMessageDialog(null, "Tem que ser um número");
                    }
                    dadosCorrectos = true;
                } while (!dadosCorrectos);

                AlunoInterno alInt1 = new AlunoInterno(nomeI, apelidoI, anoI, anoCursoI);
                System.out.println(alInt1);
                JOptionPane.showMessageDialog(null, alInt1);
                alInt1.calcularAnosInscricao(anoI);
                break;
            case 2:
                String escolaT = JOptionPane.showInputDialog("Nome da escola de origem");
                String nomeT = JOptionPane.showInputDialog("Nome do aluno:");
                String apelidoT = JOptionPane.showInputDialog("Apelido do aluno:");
                int anoT = Integer.parseInt(JOptionPane.showInputDialog("Ano de Inscrição de " + nomeT));
                int anoCursoT = Integer.parseInt(JOptionPane.showInputDialog("Ano de Curso de " + nomeT));
                Alunotransferido alTra1 = new Alunotransferido(nomeT, apelidoT, anoT, anoCursoT, escolaT);
                System.out.println(alTra1);
                JOptionPane.showMessageDialog(null, alTra1);
                alTra1.calcularAnosTransferido(anoT);
                break;
        }
no caso tenho as seguintes dúvidas: [list]Como validar os dados, fazendo com que o nomeI e apledoI sejam caracteres e não números?[/list] [list]Como fazer para controlar o do-while para que só saia do ciclo quando pegar as exceções?[/list] [list]Como escrever o código das exceções?[/list] [list]Qual a melhor forma de guardar os dados em um ficheiro?[/list] [list]Como automatizar a criação de objetos a gravar no ficheiro? Uma forma de controlar a inserção de dados?[/list] [list]Porque o \t não dá o tab na linha 06?[/list]

Mta paz p tds vcs.

3 Respostas

R

Estas são as perguntas em que posso lhe ajudar.

Utilizer regexp

if(nomeI.matches(".*[\\d].*")){
    dadosCorrectos = false;
    JOptionPane.showMessageDialog(null, "Nome não pode possuir números");
}
do {  
    dadosCorrectos = true;
    ...
    catch (NumberFormatException e) {
        dadosCorrectos = false;
        JOptionPane.showMessageDialog(null, "Tem que ser um número");  
    } 
} while (!dadosCorrectos);
mxajd

rubem_vieira:
Estas são as perguntas em que posso lhe ajudar.

Utilizer regexp

if(nomeI.matches(".*[\\d].*")){
    dadosCorrectos = false;
    JOptionPane.showMessageDialog(null, "Nome não pode possuir números");
}


[color=darkred] Vlw rubem.
Mas e o k é o regexp?
E como funciona este pedaço de código?[/color]

if(nomeI.matches(".*[\\d].*")){ dadosCorrectos = false; JOptionPane.showMessageDialog(null, "Nome não pode possuir números"); }

cumpz

R

regexp é uma abreviação para “Regular Expression” em tradução literal é “Expressão Regular” segue link http://pt.wikipedia.org/wiki/Express%C3%A3o_regular
O código abaixo utiliza do recurso de regexp para procurar caracters numéricos no conteúdo do objeto nomeI que é do tipo String e retorna verdadeiro se encontrar.

if(nomeI.matches(".*[\\d].*")){  
    dadosCorrectos = false;  
    JOptionPane.showMessageDialog(null, "Nome não pode possuir números");  
}

traduzindo a regexp:

. = Qualquer caracter;
* = repita 0 ou infinito o caracter anterior;
[\\d] = localize nesta posição um caracter numérico;
. = Qualquer caracter;
* = repita 0 ou infinito o caracter anterior;

ou seja, com a regexp fizemos praticamente uma função recursiva para que seja verificado cada caracter na string informada verificando se o mesmo é numérico, caso encontre o método retorna verdadeiro.

Criado 8 de janeiro de 2012
Ultima resposta 11 de jan. de 2012
Respostas 3
Participantes 2