2016-11-03 21 views
0

Ich bekomme diesen Fehler beim Versuch, eine Klasse mit der Methode enthält in Java zu kompilieren. Der Fehler sagt, dass es das Symbol nicht finden kann, was ich ein bisschen komisch finde, wenn ich die contains-Methode mehrmals ohne Probleme benutzt habe.Fehler beim Versuch, enthält Methode in Java

Der Fehler Ich bin wie folgt aussieht bekommen:

https://i.imgur.com/tD1ty3A.png

Hier ist mein Code:

import java.util.*; 

public class DVDAdministrasjon { 

private Map personerOversikt; 

public void nyPerson(String navn){ 
    for(int t = 0; t < personerOversikt; t++){ 
    if(!personerOversikt.get(t).equals(navn)){ 
    Person newPerson = new Person(navn); 
    personerOversikt.put(navn, newPerson); 
    } else { 
    System.out.println("Personen er allerede registrert!"); 
    } 
    } 
} 
public void kjop(Map kjoptDVD, Map eier){ 
    int teller = 0; 
    Scanner tastatur = new Scanner(System.in); 
    System.out.println("Hvem har kjopt DVD-en?"); 
    String navn = tastatur.nextLine(); 
    System.out.println("Hva er tittelen paa DVD-en?"); 
    String filmNavn = tastatur.nextLine(); 
    if(personerOversikt.contains(navn)){ 
    kjoptDVD.put(navn, filmNavn); 
    eier.put(navn, filmNavn); 
    } else { 
    System.out.println("Personen er ikke registrert enda!"); 
    } 
    } 
    public void laan (Map utlaantDVD, Map eier, Map laantDVD){ 
    Scanner tastatur = new Scanner (System.in); 
    System.out.println("Hvem vil laane DVD-en?"); 
    String navn = tastatur.nextLine(); 
    System.out.println("Hvem skal DVD-en laanes fra?"); 
    String navn2 = tastatur.nextLine(); 
    System.out.println("Hva er tittelen paa DVD-en?"); 
    String filmNavn = tastatur.nextLine(); 
    if(eier.contains(filmNavn)){ 
     if(personerOversikt.contains(navn2)){ 
     laantDVD.put(navn, filmNavn); 
     utlaantDVD.put(navn2, filmNavn); 
    } else{ 
     System.out.println(navn2 + " er ikke registrert"); 
    } 
    } else{ 
    System.out.println(navn2 + " eier ikke filmen"); 
    } 
    } 
} 

Hier ist die referenzierte Klasse:

import java.util.*; 

public class Person { 

private String navn; 
private Map kjoptDVD; 
private Map utlaantDVD; 
private Map laantDVD; 
private Map dvdOversikt; 

public Person (String navn){ 
this.navn = navn; 
} 
} 
+0

ich glaube, du bist für die 'containsKey' Methode in' Map' –

+0

Ah suchen, die Sinn macht, die ich benutzt habe immer nur das enthält Methode Arraylist verwenden und dachte, die Methode würde für beide funktionieren. Ich werde es ausprobieren! –

Antwort

0

Der Grund des Fehlers ist ganz einfach: Map-Schnittstelle keine Methode enthält benannt hat

Sie entweder Map.containsKey oder Map.containsValue verwenden müssen, sondern enthält, wie es ist nicht definiert ist und nicht gehen zu arbeiten ..

Zusätzlich Karte ist eine Schnittstelle, so vielleicht die Klasse, die Sie implementieren ein Hashmap ist .. so containsKey und Contains ein re Methoden intern mit gleich und hascode nur, wenn Sie dort wie Klasse Person eine benutzerdefinierte Klasse oder ähnlich ..

und verwenden Sie keine rohen Typen mit der Sammlung ...

Schnipsel containsValue in der HashMap Klasse ...

public boolean containsValue(Object value) { 
    Node<K,V>[] tab; V v; 
    if ((tab = table) != null && size > 0) { 
     for (int i = 0; i < tab.length; ++i) { 
      for (Node<K,V> e = tab[i]; e != null; e = e.next) { 
       if ((v = e.value) == value || 
        (value != null && value.equals(v))) 
        return true; 
      } 
     } 
    } 
    return false; 
} 
0

Sie verwenden Karten anstelle von Sammlungen. Wenn Sie Map javadocs überprüfen, sehen Sie, dass die Map Schnittstelle keine contains Methode hat. Sie sollten stattdessen containsKey verwenden.