Ir ao conteúdo

Posts recomendados

Postado

Olá, estou participando de um desafio no site URI, e ele fica me retornando um erro de runtime. Testei em outros emuladores e funciona normalmente. Qual pode ser o erro?. O desafio é validar um cpf.

 

import java.util.Scanner;
class Main {
  
  static void cpf(){
  Scanner tec = new Scanner(System.in);

   while(true){
   String cpf = tec.nextLine();

    int [] vet = new int [9];
    int x = 0;

    int dg1 = 0;
    int dg2 = 0;

     if(cpf.length() > 14) break;

        for(int i = 0;i<11;i++){
         if(cpf.charAt(i) == '.' || cpf.charAt(i) == '-'){
            }else{  
             vet[x] = Character.getNumericValue(cpf.charAt(i));
             x++;
             }
         }

         x = 0;
         int j = 9;          
         for(int i = 1;i<=9;i++,j--){
             dg1 += (vet[x] * i);
             dg2 += (vet[x] * j);
             x++;
            }

            if((dg1%11) == 10){
                dg1 = 0; 
            }else{
                dg1 = dg1%11;
            }

            if((dg2%11) == 10){
                dg2 = 0;
            }else{
                dg2 = dg2%11;
            }

            if(Character.getNumericValue(cpf.charAt(12)) == dg1 && Character.getNumericValue(cpf.charAt(13)) == dg2 ){
                System.out.print("CPF valido\n");
            }else{
                System.out.print("CPF invalido\n");
            }
        }
    }
    
    
    public static void main(String[] args) {
      cpf();
    }
    }

 

Postado

Deveria passar uma checagem na String antes de iniciar o procedimento de validação, para certificar que os dígitos são válidos (apenas números e separadores).

 

Eu criaria uma função que recebe uma String como parâmetro e trabalharia em cima dela, isso faria a função ficar mais limpa. E uma outra função para checar se a String é válida.

 

Algo mais ou menos assim:

public static boolean checar(String cpf) {
  // Procedimento para saber se a String é válida.
}

public static void validar(String cpf) {
  // Procedimento para validar a autenticidade do cpf.
}

public static void main(String[] args) {
  Scanner scanner = new Scanner(System.in);  
  String cpf = null;
  
  do {
    System.out.print("Digite o cpf [ deixe vazio para sair ]: ");
    cpf = scanner.nextLine();
    
    if (checar(cpf)) {
      if (validar(cpf)) {
        System.out.println("CPF válido.");
      } else {
        System.out.println("CPF inválido.");
      }
    } else {
      System.out.println("Entrada inválida.");
    }
  } while(!cpf.isEmpty());
}

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Mostrar mais  

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

Mostrar mais  
×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!