Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Erro na execução do teste do importarPet.

Ao realizar a execução do código do professo a um erro, falando que não foi achado a segunda linha do Scanner.

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeTestei varias formas e tentando entender sobre como se aplica essa linha no Scanner mas sem sucesso.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Alguém consegue me ajudar?

3 respostas

Olá

O erro que você mencionou, que diz que a segunda linha do Scanner não foi encontrada, é um problema comum ao trabalhar com a classe Scanner em Java. Vou explicar o que pode estar causando esse erro e como você pode resolvê-lo.

O erro que você está enfrentando provavelmente está relacionado a como você está usando a classe Scanner para ler a entrada do usuário ou um arquivo. Para ajudá-lo a diagnosticar e corrigir o problema, vou dividir a explicação em partes:

  1. Importando a classe Scanner: Certifique-se de que você importou a classe Scanner corretamente no início do seu código Java. A declaração de importação deve ser semelhante a esta:

    import java.util.Scanner;
    

    Certifique-se de que essa linha está no topo do seu arquivo Java.

  2. Instanciando o Scanner: Para usar a classe Scanner, você precisa criar uma instância dela. Isso é feito da seguinte maneira:

    Scanner scanner = new Scanner(System.in);
    

    O código acima cria uma instância do Scanner que lê a entrada do sistema (normalmente o teclado). Se você estiver lendo de um arquivo, precisará passar o arquivo como argumento no construtor do Scanner. Certifique-se de que você tenha essa linha em seu código antes de usar o Scanner para leitura.

  3. Lendo dados com o Scanner: Depois de criar a instância do Scanner, você pode usá-la para ler dados. Para ler a próxima linha, você pode fazer o seguinte:

    String linha = scanner.nextLine();
    

    Se você estiver lendo um número inteiro, pode usar nextInt() em vez de nextLine() para ler o próximo número inteiro.

  4. Tratamento de Exceções: É importante tratar exceções ao trabalhar com a classe Scanner. Por exemplo, se a entrada não puder ser convertida para o tipo esperado, isso pode gerar uma exceção. Você pode usar blocos try-catch para capturar e tratar exceções. Por exemplo:

    try {
        int numero = scanner.nextInt();
    } catch (InputMismatchException e) {
        System.out.println("Entrada inválida. Por favor, insira um número inteiro.");
    }
    

Aqui estão algumas sugestões adicionais para ajudar a solucionar o problema:

  • Verifique se você está chamando importarPet da maneira correta, passando os argumentos esperados, como arquivos ou entradas de usuário.

  • Certifique-se de que a variável do Scanner que você está usando para ler a entrada é a mesma que você instanciou no início. Por exemplo, se você criou o Scanner como Scanner scanner = new Scanner(System.in);, use scanner para todas as leituras.

  • Confira a parte do código onde você está chamando importarPet e certifique-se de que todos os parâmetros esperados estão sendo passados da maneira correta.

  • Verifique se não há outros erros de sintaxe no código que possam estar causando problemas.

  • Ao trabalhar com arquivos, certifique-se de que o arquivo que você está tentando abrir exista no caminho especificado.

  • Se você puder fornecer mais detalhes sobre o código relevante, como trechos do código que estão causando o erro (sem ser print pq eles quebram as vezes), poderei oferecer uma ajuda mais específica.

Não é um problema com o scanner, mas sim com o teste. Porque quando eu rodo o debugger ele funciona na primeira solicitação do scanner, porém ele está quebrando na segunda:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

solução!

Consegui resolver simplesmente alterando o código na classe do petsService.

Alterei o código do scanner para:

Scanner scanner = new Scanner(System.in);
System.out.println("Digite o id ou nome do abrigo:");
String idOuNome = scanner.nextLine();

System.out.println("Digite o nome do arquivo CSV:");
String nomeArquivo = scanner.nextLine();

scanner.close();

O código anterior era:

System.out.println("Digite o id ou nome do abrigo:");
String idOuNome = new Scanner(System.in).nextLine();

System.out.println("Digite o nome do arquivo CSV:");
String nomeArquivo = new Scanner(System.in).nextLine();

Aparentemente isso que gerava o erro de não encontrar a segunda linha do input.