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

Java hashmap, pobieranie danych od uzytkownika

Aruba Cloud - Virtual Private Server VPS
0 głosów
236 wizyt
pytanie zadane 15 kwietnia 2020 w Java przez Avalansz Użytkownik (580 p.)

Tworze program, ktory wypisuje liste komputerow w magazynie i ich ilosc. Po wypisaniu tego program ma wskazac komputer, ktorego stan magazynowy jest najwiekszy. Niestety z racji koronawirusa nauczyciele nie służą zbytnio pomocą a z racji tego ze na studiach w aktualnie ucze sie 4 jezykow programowania to ciezko mi to wszystko zlozyc do kupy. 

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

public class Zadanie1 {

    public static void main(String[] args) {
      System.out.println("Podaj nazwy koputerów i ich ilość: ");
      HashMap<String, Integer> mapa= new HashMap<String, Integer>();
      
       Scanner in = new Scanner(System.in);

        while(!("-")){
            
        }
        for(int i=0; i<=mapa.size(); i++){
        String a = in.next();
        Integer b = in.nextInt();

        mapa.put(a,b);
       }
       for(Map.Entry m:mapa.entrySet()){
           System.out.println(m.getKey()+ " " +m.getValue());
       }
    }
}

tam gdzie jest while po prostu juz nie wiem co wstawic, by po wpisaniu "-" program sie konczyl. Za wszelka pomoc dziekuje....

1 odpowiedź

+2 głosów
odpowiedź 16 kwietnia 2020 przez Łukasz Szczęśniak Nowicjusz (180 p.)

Z tego co się zorientowałem po Twoim kodzie, chciałbyś wprowadzić jakąś konkretną ilość danych do struktury. Mógłbyś wykorzystać pętlę podobną do Twojej:

for(int i=0; i<=mapa.size(); i++){ 
   String a = in.next();
   Integer b = in.nextInt();
   mapa.put(a,b); 
}

wystarczyłoby poprosić użytkownika o wpisanie ilości danych jakie będzie chciał on wpisywać, a następnie pobranie ich tyle razy:

int n = in.nextInt();

for (int i = 0; i < n; ++i) {
   String a = in.next();
   Integer b = in.nextInt();
   mapa.put​(a, b);
}

Twój warunek mapa.size() nie sprawdziłby się, ponieważ przed putowaniem mapa będzie pusta i metoda ta zwróciłaby 0.

Jeśli jednak chcesz bez podawania ilości na początku, możesz po prostu zamienić powyższego fora na while'a, w którym sprawdzasz czy a nie jest czasem tym "-":


String a = in.next();
Integer b;

while (!a.equals("-")) {
   b = in.nextInt();
   mapa.put(a, b);
   a = in.next();
}

 

Podobne pytania

+1 głos
1 odpowiedź 318 wizyt
pytanie zadane 23 kwietnia 2022 w Java przez Czang Kai Shrek Obywatel (1,990 p.)
0 głosów
2 odpowiedzi 305 wizyt
pytanie zadane 20 grudnia 2018 w Java przez Piotr Kusnierkiewicz Użytkownik (670 p.)
0 głosów
1 odpowiedź 203 wizyt
pytanie zadane 17 grudnia 2018 w Java przez Piotr Kusnierkiewicz Użytkownik (670 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!

...