2017-03-06 4 views
-1

Warum muss ich halten einen Fehler bekommen, wenn ich versuchen, diese Methode auszuführen,Java Mutable Datenstrukturen

import java.util.List; 
import java.util.Optional; 
import java.util.function.Predicate; 
import java.util.ArrayList; 
import java.util.HashSet; 

public class BIAOperations <T extends Comparable<T>, E> implements Set<T> 
{ 


    private HashSet<T> Set; 

    public BIAOperations(){ 
     Set = new HashSet<T>(); 
    } 

    @Override 
    public boolean isEmpty() 
    { 
     if(Set.isEmpty()) 
     { 
      return true; 
     } 
     else 
      return false; 
    } 
    @Override 
    public int size(){ 
    return Set.size(); 
} 
    @Override 
    public int compareTo(Set<T> o) { 
     return 0; 
    } 
    @Override 
    public List<T> toList() { 
     List<T> list = new ArrayList<T>(); 
     list.addAll(Set); 
     return list; 
    } 
    @Override 
    public Set<T> add(T x) { 
     Set.add(x); 
     return this; 
    } 
    @Override 
    public Set<T> remove(T x) { 
     Set.remove(x); 
     return this; 
    } 
    @Override 
    public boolean contains(T x) 
    { 
     if(Set.contains(x)) 

      return true; 
    } 
    else 
    { 
     return false; 
} 

Der Fehler, die ich erhalte, ist bei der Methode am unteren Rand des Codes enthält.

der Fehler, den ich bekomme, ist void Methoden können keinen Wert zurückgeben und auf sonst bekomme ich immer Syntaxfehler auf sonst löschen Sie dieses Token.

+0

Dies ist keine gültige Java-Methode. – Compass

+1

Vielleicht möchten Sie uns etwas mehr Code zeigen? Zum Beispiel die überschriebene Methode? Es wäre auch schön, wenn Sie es richtig einrücken könnten. Ich kann Ihnen jedoch schon so viel sagen: Ihnen fehlen geschweifte Klammern. Auch 'Set.contains9x' macht keinen Sinn, es gibt kein solches Element in' Set'. Was soll das bedeuten? – domsson

+0

@domdom Das ist wahrscheinlich ein Tippfehler. – UnknowableIneffable

Antwort

1

Der else Block ist außerhalb der Methode. Fix es wie folgt:

@Override 
    public boolean contains(T x) 
    { 
     if(Set.contains(x)) 

      return true; 
     else 
      return false; 
    } 

EDIT: Sie diesen Code auch per @ im Kommentar Vorschlag des Unholysheep verkürzen.

@Override 
    public boolean contains(T x) 
    { 
     return Set.contains(x); 
    } 

Verwenden Sie gemäß @ domdoms Vorschlag im Kommentar auch einen besseren Namen für Ihr Objekt. In Java würde ich Ihnen empfehlen, Namen zu verwenden, die mit einem kleinen Buchstaben für Ihre Objekte beginnen. In der Regel werden Namen, die mit einem Großbuchstaben beginnen, für Klassennamen verwendet. Verwenden Sie also anstelle von Setset oder customSet oder etwas für Ihr Objekt.

+0

Brilliant Mate hat den Code repariert. –

+1

Oder einfach 'return Set.contains (x);' :) – UnholySheep

+2

Ich empfehle immer noch, 'Set' umzubenennen. Dies kann und wird höchstwahrscheinlich zumindest zu Verwirrung führen. – domsson

Verwandte Themen