• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wypisanie elementu z pary w hashmapie - Java

Object Storage Arubacloud
0 głosów
250 wizyt
pytanie zadane 19 kwietnia 2020 w Java przez Avalansz Użytkownik (580 p.)

Witam. Tworze program, ktory ma polegac na wyszukaniu imienia drugiej osoby z pary po wpisaniu imienia pierwszej.

public static void main(String[] args) {

              
        Map<String, String> mapaImion = new HashMap();
        
        Scanner scanner = new Scanner(System.in);
        System.out.println("ALERT:Aby przerwać wprowadzanie wpisz '-'");
    while(true){    
        System.out.println("Podaj pierwsze imię z pary");
        String imie1 = scanner.nextLine();
        System.out.println("Podaj drugie imię z pary");
        String imie2 = scanner.nextLine();
        boolean czyIstnieje = mapaImion.containsKey(imie1);
        
        if(imie1.equals("-")){
            System.out.println("Podaj imię osoby, której parę chcesz sprawdzić");
            String imie = scanner.nextLine();
            if(mapaImion.containsKey(imie)){
                
            }
            
        }
        else
            mapaImion.put(imie1, imie2);
            
        System.out.println(mapaImion);
        
        }  
    }

Stworzylem zmienna imie ale nie za bardzo wiem jak potem podpiac to imie pod imiona, ktore sa juz w hashmapie i potem to wywolac. Z gory dzieki za podpowiedzi

1 odpowiedź

+1 głos
odpowiedź 19 kwietnia 2020 przez Programeł Gaduła (3,500 p.)
wybrane 19 kwietnia 2020 przez Avalansz
 
Najlepsza

Witaj 

Nie wiem czy o to Ci dokładnie chodzi ale w interfejsie Map jest gotowa funkcja get() .
Podajesz funkcji klucz (pierwsze imie pary) i jeśli klucz jest poprawny to funkcja zwróci Ci wartość jaka jest przechowywana pod tym kluczem.

1
komentarz 19 kwietnia 2020 przez Avalansz Użytkownik (580 p.)

Wlasnie mialem pisac, ze cos tam zrobilem wlasnie z get, ale program mi nie wypisuje drugiego imienia na koncu. Nie wiem dlaczego

public class Zadanie3 {

    public static void main(String[] args) {

              
        Map<String, String> mapaImion = new HashMap();
        
        Scanner scanner = new Scanner(System.in);
        System.out.println("ALERT:Aby przerwać wprowadzanie wpisz '-'");
    while(true){    
        System.out.println("Podaj pierwsze imię z pary");
        String imie1 = scanner.nextLine();
        System.out.println("Podaj drugie imię z pary");
        String imie2 = scanner.nextLine();
        
        if(imie1.equals("-")){
            System.out.println("Podaj imię osoby, której parę chcesz sprawdzić");
            String imie = scanner.nextLine();
            if(mapaImion.containsKey(imie)&&(imie.equals(imie1))){
                System.out.println(mapaImion.get(imie2));
            }
            else if(mapaImion.containsKey(imie)&&(imie.equals(imie2))){
                System.out.println(mapaImion.get(imie1));
            }
            else
                return;
            
        }
        else
            mapaImion.put(imie1, imie2);
            
        System.out.println(mapaImion);
        
        }  
    }

 

komentarz 19 kwietnia 2020 przez Avalansz Użytkownik (580 p.)
Przy wykonywaniu programu obsluguje elsa z return a omija ifa i else ifa.
komentarz 19 kwietnia 2020 przez Programeł Gaduła (3,500 p.)

1. Twórz nazwy zmiennych, które nie "mieszają się" z innymi nazwami, tak aby była w pewien sposób wyjątkowe. 

W twoim przypadku zmieniłbym nazwę zmiennej imie na coś innego aby nie mieszała się z imie1 imie2

 

Mała podpowiedź:
Zerknij na linijkę kodu w której pobierasz wartość z mapy.

2. Te if-y można zastąpić jednym i bardziej zrozumiałym if-em. Z dokumentacji można wyczytać że funkcja get()  zwraca null w przypadku gdy klucz nie istnieje albo można stworzyć block try-catch i wyłapać wyjątek ale w tym przypadku wygodniej będzie zastosować metode na if-a.   

komentarz 19 kwietnia 2020 przez Avalansz Użytkownik (580 p.)
Teraz wywoluje sie funkcja ale zwraca null. Jak pobrac imie tak, zeby pasowalo do tego pierwszego z pary, ktore wpisalem?
komentarz 19 kwietnia 2020 przez Programeł Gaduła (3,500 p.)
Pokaż kod
komentarz 19 kwietnia 2020 przez Avalansz Użytkownik (580 p.)

 

 public static void main(String[] args) {

              
        Map<String, String> mapaImion = new HashMap();
        
        Scanner scanner = new Scanner(System.in);
        System.out.println("ALERT:Aby przerwać wprowadzanie wpisz '-'");
    while(true){    
        System.out.println("Podaj pierwsze imię z pary");
        String imie1 = scanner.nextLine();
        System.out.println("Podaj drugie imię z pary");
        String imie2 = scanner.nextLine();
        
        if(imie1.equals("-")){
            System.out.println("Podaj imię osoby, której parę chcesz sprawdzić");
            String imie = scanner.nextLine();
            if(imie.equals(imie1)){
                System.out.println("Imię z pary to: " + mapaImion.get(imie2));
            }
            else{
                System.out.println("Imię z pary to: " + mapaImion.get(imie1));
            }
            return;
        }
            mapaImion.put(imie1, imie2);
            
        System.out.println(mapaImion);
        
        }  
    }

 

komentarz 19 kwietnia 2020 przez Programeł Gaduła (3,500 p.)

Po co sprawdzasz czy zmienna imie pasuje do zmiennej imie1 ?

Co jeśli użytkownik poda np: 10 par i będzie chciał sprawdzić czy podane przez niego imię jest w mapie, które podał na początku a zmienna imie1 jest nadpisana imieniem podanym na końcu ? 

Po prostu zrób if-a który sprawdzi czy klucz (zmienna imie), podany przez użytkownika programu, znajduje się w mapie.
Najprościej będzie jak stworzysz String'a, który będzie pobierał wartość zwracaną przez funkcje get() :


if((String returned_value = mapaImion.get(imie)) != null)
{
    // Wypisz imie ze zmiennej 'returned_value'
}
esle
{
   // Wypisz blad
}


 

komentarz 19 kwietnia 2020 przez Avalansz Użytkownik (580 p.)
Czy jak tak zrobie to zwroci mi imie z odpowiedniej pary? Ktora to czesc kodu bo troche nie rozumiem
1
komentarz 19 kwietnia 2020 przez Avalansz Użytkownik (580 p.)
o kurcze. Dziala. Szczerze mowiac to nie wiem torche jak , ale przebadam to pozniej. Dziekuje ci sliczne <3
komentarz 20 kwietnia 2020 przez Programeł Gaduła (3,500 p.)

If-y podane przeze mnie powinny zastąpić te dwa if-y u ciebie w kodzie:
 

 ...
       if(imie1.equals("-")){
           System.out.println("Podaj imię osoby, której parę chcesz sprawdzić");
           String imie = scanner.nextLine();
           
           // od
           if(imie.equals(imie1)){
               System.out.println("Imię z pary to: " + mapaImion.get(imie2));
           }
           else{
               System.out.println("Imię z pary to: " + mapaImion.get(imie1));
           }
           // do
 ...

A teraz wyjaśnienie działania:

if((String returned_value = mapaImion.get(imie)) != null)
{
...

Tak zapisana instrukcja warunkowa pozwala skrócić kod, który mógłby wyglądać również tak:


String returned_value = mapaImion.get(imie);
if(returned_value != null)
{
...

I to tyle.

Podobne pytania

0 głosów
1 odpowiedź 324 wizyt
pytanie zadane 14 listopada 2021 w Java przez ITshnyk Obywatel (1,800 p.)
0 głosów
1 odpowiedź 111 wizyt
+1 głos
1 odpowiedź 246 wizyt
pytanie zadane 23 kwietnia 2022 w Java przez Czang Kai Shrek Obywatel (1,990 p.)

92,584 zapytań

141,433 odpowiedzi

319,668 komentarzy

61,966 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...