Opdrachten Hfdstk 5

Plaats reactie
Kitty
Berichten: 11
Lid geworden op: 28-08-2013 13:12

Opdrachten Hfdstk 5

Bericht door Kitty » 14-09-2013 16:58

Omdat ik in hoofdstuk 4 even vast liep en toch verder wilde ben ik verder gegaan met hoofdstuk 5. Hier blijf ik een foutmelding krijgen bij opdracht 5.26

In netbeans als ik import java.util.HashMap krijg ik:
incorrect package
unused import


en bij bluej krijg ik bij compile van de volgende code:

Code: Selecteer alles


import java.util.HashMap;

/**
 * Write a description of class MapTester here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class MapTester
{
    // instance variables - replace the example below with your own
    private HashMap phoneBook;
   
    /**
     * Constructor for objects of class MapTester
     */
    public MapTester()
    {
        // initialise instance variables
        HashMap<String, String> phoneBook = new HashMap<String, String>();
    }

    /**
     * An example of a method - replace this comment with your own
     * 
     * @param  y   a sample parameter for a method
     * @return     the sum of x and y 
     */
    public void enterNumber(String name, String number)
    {
        // put your code here
        phoneBook.put(name, number);
    }
    
    public String lookupNumber(String name)
    {
        //return phoneBook.get(name);
        return "Test";
    }
}
Deze error:
Note: ....MapTester.java uses unchecked of unsafe operations.
Note: Recompile with -Xlint:unchecked for details

Wat doe ik fout?

ercoargante
Site Admin
Berichten: 9
Lid geworden op: 19-08-2013 19:01

Bericht door ercoargante » 14-09-2013 18:59

Kitty,

In de constructor MapTester() heb je gezet:
HashMap<String, String> phoneBook = new HashMap<String, String>();
Daarmee initialiseer je niet de instantie variabele, maar maak je een nieuwe lokale variabele aan. Ik denk niet dat dat je bedoeling is en denk dat het moet zijn:
phoneBook = new HashMap<String, String>();


Mogelijk krijg je een warning "redundante type arguments in new expression (use diamond operator instead". Het gaat hier om een aanpassing tussen Java versie 6 en 7. Het is geen fout, maar dit lost het op:
phoneBook = new HashMap<>();


Nog een verbetering. Je hebt nu als member van de klasse:
private HashMap phoneBook;
Eigenlijk is beter:
private HashMap<String, String> phoneBook;
Je dwingt dan namelijk af dat de HashMap alleen Strings kan bevatten. Als je dan namelijk iets uit de HashMap haalt, hoef je niet meer te checken dat het inderdaad een String is.

Erco

Kitty
Berichten: 11
Lid geworden op: 28-08-2013 13:12

Bericht door Kitty » 14-09-2013 19:10

Na het aanpassen van de code:

Code: Selecteer alles

private HashMap phoneBook;
Naar:

Code: Selecteer alles

private HashMap<String, String> phoneBook;

En de constructor is ook aangepast:

Is het opgelost en krijg ik geen error meer, bedankt!

Code: Selecteer alles

public MapTester()
    {
        // initialise instance variables
        phoneBook = new HashMap<String, String>();
    }

RonaldK
Berichten: 10
Lid geworden op: 29-08-2013 16:40

Oefening 5.65

Bericht door RonaldK » 18-09-2013 15:01

Op oefening 5.65 loop ik behoorlijk vast, vooral omdat ik niet echt goed weet waar te beginnen.
Het project wat je hebt van de vorige opdrachten is wel een goed startpunt, maar dan ?? Waarschijnlijk loop ik gewoon veel te moeilijk te denken.

Iemand tips hoe ik deze opdracht het beste kan aanpakken ?

Plaats reactie