• 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

Aruba Cloud - Virtual Private Server VPS
0 głosów
331 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ź 360 wizyt
pytanie zadane 14 listopada 2021 w Java przez Uczen12345 Obywatel (1,800 p.)
0 głosów
1 odpowiedź 136 wizyt
+1 głos
1 odpowiedź 318 wizyt
pytanie zadane 23 kwietnia 2022 w Java przez Czang Kai Shrek Obywatel (1,990 p.)

93,329 zapytań

142,323 odpowiedzi

322,400 komentarzy

62,662 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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...