2
respostas

Cargo com mais de uma palavra

Pessoal, com a ajuda do moderador Otávio, fiz o método atualizar de uma forma diferente do instrutor. Segue o modelo:

private void atualizar(Scanner scan) {        
        scan.useDelimiter("\n");
        System.out.println("Informe o Id do cargo que deseja atualizar: ");

        Integer id = scan.nextInt();

        Cargo cargo = this.cargoRepository.findById(id).get();

        System.out.println("Novo cargo: ");

        String novoCargo = scan.next();

        cargo.setDescricao(novoCargo);

        this.cargoRepository.save(cargo);

        System.out.printf("Cargo de id %d atualizado com sucesso!\n", id);

    }

Dessa forma você consegue escrever descrição com mais de uman palavra.

2 respostas

Perfeito, Camila :)

Oi, pessoal!

Descobri uma outra forma para conseguirmos atualizar a descrição do cargo com mais de uma palavra separada por espaços, apesar de ser levemente "gambiarresca":

Consiste basicamente em concatenar todo o conteúdo retornado pelo método .next() e armazenado na variavel descricao utilizando o método .nextLine(), que lê espaçamentos em branco.

Interessante frisar que, ao utilizar apenas .nextLine(), o nosso método atualizar pula diretamente para a linha vazia e não atualiza a descrição do cargo.

Segue o código:

    private void atualizar(Scanner scanner) {
        System.out.println("Informe o ID a ser alterado:");
        int id = scanner.nextInt();
        System.out.println("Informe a nova descrição:");
        String descricao = scanner.next();
        descricao += scanner.nextLine();

        Cargo cargo = new Cargo();
        cargo.setId(id);
        cargo.setDescricao(descricao);

        repository.save(cargo);
        System.out.println("Cargo atualizado.");

    }