Java - Verwaltungsprogramm Suchfunktion

Ich verstehe nicht warum der Bluej die Fehlermeldung "cannot find symbol - method vorhandenStudent(java.lang.String)" zeigt, die Methode vorhandenStudent habe ich deklariert, aber wenn ich die Funktion aufrufe, dann wird die Fehlermeldung gezeigt. Hier ist die Funktion, sie soll true zurückliefern, wenn ein Student mit dem Namen vorhanden ist:
Code:
    public boolean vorhandenStudent(String name)
    {
        Studenten einStudent;
        boolean result=false;
        for(Object o: meineStudenten)
        {
            einStudent=(Studenten)o;
            if(name==einStudent.getName())
            {
                result=true;
            }
            else
            {
                result=false;
            }
        }
        return result;
    }

So rufe ich die Funktion auf:
Code:
System.out.print("Name: ");
String suche=Console.readString();
vorhandenStudent(suche); /*hier wird die fehler gezeigt

Weiss jemand wo der Fehler liegt?
 
AW: Java - Verwaltungsprogramm Suchfunktion

Hi fcosta!

Den Code, den du hier geschickt hast, sehe ich überhaupt keinen Fehler! Es muss woanders liegen!

Kannst du den vollständigen Code hier eintragen?

Gruß
Iron Monkey
 
AW: Java - Verwaltungsprogramm Suchfunktion

Code:
public abstract class Person
{
    protected String name;
    protected String korpergrosse;
    protected Person(String name,String korpergrosse)
    {
        this.name=name;
        this.korpergrosse=korpergrosse;
    }
    public String getName()
    {
        return name;
    }
    public String getKorpergrosse()
    {
        return korpergrosse;
    }
}

Code:
public class Studenten extends Person
{
    private String matrikelnummer;
    public Studenten(String name,String korpergrosse, String matrikelnummer)
    {
        super(name,korpergrosse);
        this.matrikelnummer=matrikelnummer;
    }
    public String getMatrikelnummer()
    {
        return matrikelnummer;
    }
    public String toString()
    {
        StringBuilder ret=new StringBuilder();
        ret.append("Student: Name: " + getName());
        ret.append(" Körpergröße: "+getKorpergrosse());
        ret.append(" Matrikelnummer: " + getMatrikelnummer());
        return ret.toString();
    }
    
}

Code:
public class Studenten extends Person
{
    private String matrikelnummer;
    public Studenten(String name,String korpergrosse, String matrikelnummer)
    {
        super(name,korpergrosse);
        this.matrikelnummer=matrikelnummer;
    }
    public String getMatrikelnummer()
    {
        return matrikelnummer;
    }
    public String toString()
    {
        StringBuilder ret=new StringBuilder();
        ret.append("Student: Name: " + getName());
        ret.append(" Körpergröße: "+getKorpergrosse());
        ret.append(" Matrikelnummer: " + getMatrikelnummer());
        return ret.toString();
    }
    
}

Code:
public class studentHilfe extends Studenten
{
    private String tatigkeit;
    public studentHilfe(String name,String korpergrosse,String matrikelnummer,String tatigkeit)
    {
        super(name,korpergrosse,matrikelnummer);
        this.tatigkeit=tatigkeit;
    }
    public String getTatigkeit()
    {
        return tatigkeit;
    }
        public String toString()
    {
        StringBuilder ret=new StringBuilder();
        ret.append("Studentische Hilfskraft: Name: " + getName());
        ret.append(". Körpergröße: "+getKorpergrosse());
        ret.append(". Matrikelnummer: " + getMatrikelnummer());
        ret.append(". Tätigkeit: " + getTatigkeit());
        return ret.toString();
    }
}

Code:
import java.util.*;
public class StudentenContainer
{
    private ArrayList meineStudenten=new ArrayList();
    ///Singleton StudentenContainer, es soll nur ein Objekt erzeugt werden
    private static StudentenContainer einStudentenContainer=null;
    private StudentenContainer()
    {
    }
    public static StudentenContainer getObjektreferenz()
    {
        if(einStudentenContainer==null)
            einStudentenContainer=new StudentenContainer();
        return einStudentenContainer;
    }
    //Ende Singleton Container
    
    public void insertStudent(Studenten einStudent)
    {
        meineStudenten.add(einStudent);
    }
    public ArrayList gibAlleStudenten()
    {
        return meineStudenten;
    }
    
    public boolean vorhandenStudent(String name)
    {
        Studenten einStudent;
        boolean result=false; //Falls der Container leer ist, dann wird die boolsche Variable result nicht initialisiert -> Compilerfehler, dann wird sie mit false gestartet
        for(Object o: meineStudenten)
        {
            einStudent=(Studenten)o;
            if(name==einStudent.getName())
            {
                result=true;
            }
            else
            {
                result=false;
            }
        }
        return result;
    }
    
}

Code:
//Singleton in Container einfügen

import inout.*;
import java.util.*;

public class StudentenUI
{
    public static void main(String args[])
    {
        int go=1;
        StudentenContainer meinContainer=StudentenContainer.getObjektreferenz(); //Zugriff Singleton
        String name,matrikelnummer,korpergrosse,tatigkeit;
        while(go==1)
        {
            System.out.println("-------------------Student-------------------");
            System.out.print("Name: ");
            name=Console.readString();
            System.out.print("Matrikelnummer: ");
            matrikelnummer=Console.readString();
            System.out.print("Körpergröße: ");
            korpergrosse=Console.readString();
            Studenten einStudent=new Studenten(name,korpergrosse,matrikelnummer);
            
            System.out.println("-------------------Studentische Hiilfskraft-------------------");
            System.out.print("Name: ");
            name=Console.readString();
            System.out.print("Matrikelnummer: ");
            matrikelnummer=Console.readString();
            System.out.print("Körpergröße: ");
            korpergrosse=Console.readString();
            System.out.print("Tätigkeit: ");
            tatigkeit=Console.readString();
            studentHilfe einStudentHilfe=new studentHilfe(name,korpergrosse,matrikelnummer,tatigkeit);
            
            //Objekte in Container hinzufügen
            meinContainer.insertStudent(einStudent);
            meinContainer.insertStudent(einStudentHilfe);
            System.out.println("(0) Abbrechen\n(1)Weiter einfügen");
            go=Console.readInt();
        }
        
        //Container ausdrücken
        druckeStudentenliste(meinContainer);
        
        System.out.print("Name: ");
        String suche=Console.readString();
        vorhandenStudent(suche);
}

    //Funktion druckeStudentenListe
    private static void druckeStudentenliste(StudentenContainer einContainer)
    {
        Studenten einStudent;
        ArrayList meineStudenten=einContainer.gibAlleStudenten();
        for(Object o: meineStudenten)
        {
            einStudent=(Studenten)o;
            System.out.println(einStudent.toString());
        }
    }
}
 
AW: Java - Verwaltungsprogramm Suchfunktion

Hallo fcosta,


wenn ich das richtig sehe, ist die Methode "vorhandenStudent(String name)" eine öffentliche Mehtode der Klasse
StudentenContainer. Um diese zu benutzen musst Du sie über eine Instanz der Klasse aufrufen. In diesem Fall also

meinContainer.vorhandenStudent()

Ich habe dein Programm mal ausgeführt, musste es dafür allerdings ein bisschen anpassen damit es bei mir funktioniert hat.
Dabei ist mir aufgefallen, dass Du für den Rückgabewert der Funktion "vorhandenStudent()" keine Ausgabefunktion erstellt hast. Soll heißen es wird dir auf der Konsole nichts angezeigt.

Gruß
Qiu
 
AW: Java - Verwaltungsprogramm Suchfunktion

Jetzt funktioniert das Programm, aber das Ergebnis der Suchfunktion ist immer false, das ist die Änderung in StudentenUI:

Code:
//Singleton in Container einfügen

import inout.*;
import java.util.*;

public class StudentenUI
{
    public static void main(String args[])
    {
        int go=1;
        boolean ret;
        StudentenContainer meinContainer=StudentenContainer.getObjektreferenz(); //Zugriff Singleton
        String name,matrikelnummer,korpergrosse,tatigkeit;
        while(go==1)
        {
            System.out.println("-------------------Student-------------------");
            System.out.print("Name: ");
            name=Console.readString();
            System.out.print("Matrikelnummer: ");
            matrikelnummer=Console.readString();
            System.out.print("Körpergröße: ");
            korpergrosse=Console.readString();
            Studenten einStudent=new Studenten(name,korpergrosse,matrikelnummer);
            
            System.out.println("-------------------Studentische Hiilfskraft-------------------");
            System.out.print("Name: ");
            name=Console.readString();
            System.out.print("Matrikelnummer: ");
            matrikelnummer=Console.readString();
            System.out.print("Körpergröße: ");
            korpergrosse=Console.readString();
            System.out.print("Tätigkeit: ");
            tatigkeit=Console.readString();
            studentHilfe einStudentHilfe=new studentHilfe(name,korpergrosse,matrikelnummer,tatigkeit);
            
            //Objekte in Container hinzufügen
            meinContainer.insertStudent(einStudent);
            meinContainer.insertStudent(einStudentHilfe);
            System.out.println("(0) Abbrechen\n(1)Weiter einfügen");
            go=Console.readInt();
        }
        
        //Container ausdrücken
        druckeStudentenliste(meinContainer);
        
        System.out.print("Name suchen: ");
        String suche=Console.readString();
        ret=meinContainer.vorhandenStudent(suche);
        if(ret==true)
        {
            System.out.println(suche + " ist in der Liste vorhanden");
        }
        else
        {
            System.out.println(suche + " ist in der Liste nicht vorhanden");
        }
}

    //Funktion druckeStudentenListe
    private static void druckeStudentenliste(StudentenContainer einContainer)
    {
        Studenten einStudent;
        ArrayList meineStudenten=einContainer.gibAlleStudenten();
        for(Object o: meineStudenten)
        {
            einStudent=(Studenten)o;
            System.out.println(einStudent.toString());
        }
    }
}
 
AW: Java - Verwaltungsprogramm Suchfunktion

Hi!

In der Methode "vorhandenStudent(...)" bei der if-Abfrage -> if(name==einStudent.getName())!

Bei String vergleicht man immer mit equals(...) statt ==, z.B.:

if(name.equals( einStudent.getName() ) )

Da liegt der Grund, warum immer false zurückkommt! ;)

Gruß
Iron Monkey
 

Jobs

Jobmail abonieren - keine Jobs mehr verpassen:

Top