2016-11-03 18 views
0

javaのcontainsメソッドを使用してクラスをコンパイルしようとすると、このエラーが発生します。エラーは、シンボルを見つけることができないと言います。これは、何も問題を起こさずにcontainsメソッドを何度も使用したことを考えるとちょっと変わったものです。Javaでcontainsメソッドを使用しようとするとエラーが発生する

私はこのようになります取得していますエラー:

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

はここに私のコードです:

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"); 
    } 
    } 
} 

は、ここで参照されるクラスです:

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

は、私はあなたが理にかなってMap' –

+0

ああ ''でcontainsKey'方法を探していると思うが、私は今までのArrayListを使用する方法が含まれて使用して考えましたメソッドは両方のために動作します。私はそれをテストします! –

答えて

0

エラーの理由は非常に簡単です: Mapインタフェースは、という名前のメソッドは、Map.containsKeyMap.containsValueのいずれかを使用する必要がありますが、それは定義されていないされて行くのではありませんとして含まれてい

が含まれていません仕事に...さらに

を、地図はとても...インタフェースは、多分あなたは実装しているクラスがハッシュマップあるのcontainsValueのcontainsKeyとです内部を使用する方法再..あなたがPersonクラスまたは類似のようにカスタムクラスを持っているだけの場合には

とコレクションで生タイプを使用していない...

スニペットをhascodeに等しいです。 HashMapのクラスでcontainsValue ...

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

あなたがマップを使用していますコレクションの代わりに。 Map javadocsをチェックすると、Mapインターフェイスにcontainsメソッドがないことがわかります。代わりにcontainsKeyを使用してください。

0

Mapは、方法がありませんcontainsです。試してくださいcontainsKey

関連する問題