1
resposta

Ajuda na leitura de Maps

Pessoal fiz esse código mas não estou conseguindo fazer com que o valor inserido no JOptionPane seja lido logo apos pelo maps alguém poderia me ajudar?? Quero fazer com que o CPF salvo seja vinculado com o numero do quarto, e logo apos o usuário digitar o numero do CPF ele receba o numero do seu quarto, se digitar um numero não existente o código imprima que o mesmo CPF não possui vinculo

package br.dell.modelos;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import java.util.Scanner;

import javax.swing.JOptionPane;

public class Principal {

    public static void main(String[] args) {
        HashMap mapa = new HashMap<>();
        Scanner scanner = new Scanner(System.in);

        Random aleatorio = new Random();
        Hospedes hospede = new Hospedes();

        Quarto quarto = new Quarto();
        int valor;
        quarto.setNumero(valor = aleatorio.nextInt(30) + 1);

        if (true) {

            while (true) {
                try {
                    hospede.setCpf(Integer.parseInt(JOptionPane.showInputDialog("Digite seu CPF: ")));
                    try {
                        hospede.setRg(Integer.parseInt(JOptionPane.showInputDialog("Seu RG: ")));
                    } catch (NumberFormatException corrige) {
                        JOptionPane.showMessageDialog(null,
                                "Tipo de entrada invalida. Digite caracteres do tipo numérico sem pontuação", "ERRO",
                                JOptionPane.ERROR_MESSAGE);
                        return;
                    }

                    hospede.setNome(JOptionPane.showInputDialog("Nome: "));
                    if (hospede.getNome().matches("[a-zA-Z]+")) {

                    } else {
                        JOptionPane.showMessageDialog(null, "Você não pode inserir números no nome.", "ERRO",
                                JOptionPane.ERROR_MESSAGE);
                        return;
                    }

                    try {
                        hospede.setIdade(Integer.parseInt(JOptionPane.showInputDialog("Idade: ")));
                    } catch (NumberFormatException corrige) {
                        JOptionPane.showMessageDialog(null,
                                "Tipo de entrada invalida. Digite caracteres do tipo numérico sem pontuação", "ERRO",
                                JOptionPane.ERROR_MESSAGE);
                        return;
                    }
                    hospede.setEndereco(JOptionPane.showInputDialog("Seu endereço: "));
                    if (hospede.getEndereco().matches("[a-zA-Z]+")) {

                    } else {
                        JOptionPane.showMessageDialog(null, "Digite o nome da rua sem qualquer número.", "ERRO",
                                JOptionPane.ERROR_MESSAGE);
                        return;
                    }
                } catch (NumberFormatException corrige) {
                    JOptionPane.showMessageDialog(null,
                            "Tipo de entrada invalida. Digite caracteres do tipo numérico sem pontuação", "ERRO",
                            JOptionPane.ERROR_MESSAGE);
                    return;
                }
                if (true) {
                    JOptionPane.showMessageDialog(null,
                            "Realização cadastral" + "\n" + "CPF: " + hospede.getCpf() + "\n" + "RG: " + hospede.getRg()
                                    + "\n" + "Nome: " + hospede.getNome() + "\n" + "Idade: " + hospede.getIdade() + "\n"
                                    + "Endereço: " + hospede.getEndereco());
                    JOptionPane.showMessageDialog(null,
                        "Obrigado Sr. " + hospede.getNome() + " seu quarto é o " + quarto.getNumero());
                    
                    mapa.put(quarto.getNumero(), hospede.getCpf());
                    String buscaCpf = scanner.nextLine();
                    break;
                }
            }

        }
        
        
        String cliente = mapa.put(quarto.getNumero(), hospede.getCpf());
        if(cliente == mapa.get(hospede)) {
            
            System.out.println("CPF de numero N°" +  ".Está vinculado com o quarto de N° " + quarto.getNumero());
        }else {
            System.out.println("Não foi");
        }
        
        
    }
}
1 resposta

Oi, vou tentar:

Primeiro, deixa o atributo cpf na classe Hospede como String (altere tbm o get e set):

public class Hospedes {

    private String cpf;
....

Segundo, usa generics na declaração do HashMap para tipar chave e valor, na classe Principal:

HashMap<Integer,String> mapa = new HashMap<>();

Terceiro, tirar o parsing do CPF, deixa apenas (sem Integer.parseInt()):

hospede.setCpf(JOptionPane.showInputDialog("Digite seu CPF: "));

Isso, deve ser o suficiente.

abs