Rekursives suchen in einer Liste

Status
Nicht offen für weitere Antworten.

Norg

Mitglied
Hallo

Ich hab wieder einmal ein kleine Problem.

Angabe:
Schreiben Sie ein Programm das die Methode

public static boolean istEnthalten(int n, ListOfInt myList) //ist n in myList enthalten?

sowie eine main-Methode zum Testen anbietet. Die istEnthalten-Methode muss rekursiv definiert sein. Die main-Methode soll vom Benutzer eine int-Zahl erfragen, diese intern als Liste ihrer Dezimalziffern darstellen und dann die Benutzerfrage nach dem Vorkommen einer bestimmten Ziffer beantworten.

So, natürlich geht bei mir mal wieder nichts so wie es soll.
Beim Kompilieren bekomme ich immer die Fehlermeldungen:

Bsp24.java:30: cannot find symbol
symbol : variable head
location: class ListOfInt
if(a.head==z){

Bsp24.java:33: cannot find symbol
symbol : variable tail
location: class ListOfInt
if(a.head==z){



Bin für jede Hilfe äußerst dankbar.
Nachfolgend mein bisheriger Code:

Code:
public class Bsp24{
public static void main(String[] args) {
String s;
int z;

ListOfInt a=ListOfInt.emptyList();


System.out.println("Gib Zahl ein");
s = SavitchIn.readLine(); //Benutzereingabe einlesen 

for(int i=0; i<s.length(); i++){
a=a.add(s.charAt(i));
}
System.out.println(a); 


System.out.println("Gesuchte Zahl");
z=SavitchIn.readLineInt();

istEnthalten(z,a);
}


//---------------------------------------------------
public static boolean istEnthalten(int z, ListOfInt a){
boolean result;


if(a.head==z){
result=true;
}else {
a=a.tail;}
istEnthalten(z,a);

if (result==true)
return result;
else
return false;
}
}

Weiters die Klasse ListOfInt die ich dafür benutzen soll

Code:
public class ListOfInt{

//-----------------------------------------Instanzvariablen
private int elem;
private ListOfInt rest;
//-----------------------------------------Klassenvariablen

private static ListOfInt theEmptyList = new ListOfInt();
//-----------------------------------Konstruktoren (privat)
private ListOfInt(){}
private ListOfInt(int i, ListOfInt l){
elem = i;
rest = l;}
//----------------------------------Schnittstellenmethoden
public static ListOfInt emptyList(){
return theEmptyList;}
//liefert leere Liste

public ListOfInt add(int i){
return new ListOfInt(i,this);}
// fügt i als Element vorne hinzu

public ListOfInt tail(){
//requires notEmpty
return rest;}
//liefert Rest-Liste

public int head(){
//requires notEmpty
return elem;}
//liefert erstes Element

public boolean notEmpty(){
return (this != theEmptyList);
//true gdw. Liste nicht leer
}}
 

Campino

Top Contributor
head und tail sind Funktionen und müssen als solche aufgerufen werden, also mit Klammern hinter dem Funktionsnamen.

(Es gibt übrigens keinen größeren Mist als das rekursiv zu machen, iterativ geht einfacher. Aber ich nehme mal an das das eine Hausaufage ist und wenn es dann in der Aufgabenstellung steht :roll: )
 

Norg

Mitglied
Danke für den Tipp mit den Klammern, wie konnte ich das nur übersehen.

Jetzt habe ich aber ein neues Problem, compilieren geht ohne Probleme, nur bei der Ausführung hakt es noch etwas.
Ich wollte mir meine Liste ausgeben lassen doch dabei kommt nur so etwas heraus: ListOfInt@42719c
also nicht brauchbares.
Jetzt habe ich den Verdacht dass ich meine Liste irgendwie fehlerhaft aufbaue, weiß aber nicht wirklich warum.
 
S

SlaterB

Gast
> doch dabei kommt nur so etwas heraus: ListOfInt@42719c

weil du die toString()-Operation nicht anders definiert hast,
soll Java sich selber ausdenken, was du da gerne als Ausgabe hättest?

> Jetzt habe ich den Verdacht dass ich meine Liste irgendwie fehlerhaft aufbaue, weiß aber nicht wirklich warum.

und ich habe den Verdacht, dass dein Programm nach Tomaten riecht,
aber bringt es irgendjemanden etwas, haltlose Verdachte anzubringen?
 

Norg

Mitglied
Hab das ganze jetzt nochmal ein bisschen umgebaut und komme jetzt ohne Strings aus.
Dafür bekomme ich jetzt immer einen Stack Overflow Error.
Allerdings weiß ich nicht warum, denn die Liste wird doch bei jedem Durchlauf um einen Wert kürzer.

Code:
public static boolean istEnthalten(int z, ListOfInt c){
boolean result=false;

if(c.notEmpty()==true)
if(c.head()==z){   //head gibt ersten Wert der Liste
result=true;}
else{
if(c.notEmpty()==true)
c=c.tail();}  //gibt den Rest der Liste 
istEnthalten(z,c);

if (result==true)
return true;
else
return false;
}
 

JavaFred

Aktives Mitglied
Norg hat gesagt.:
Code:
if (result==true)
return true;
else
return false;
Wenn es wahr ist, dass result den Wert true hat, dann gib den Wert true zurück, ansonsten false... :)

Folgender Code ist äquivalent:

Code:
return result;
 

Leroy42

Top Contributor
Code:
if (result != true) 
  return false; 
else 
  return true;

ginge auch! :cool:
 

Norg

Mitglied
Ich hab das jetzt mal teilweise so gelöst:


Code:
if(c.notEmpty()==true) {
 
            if (c.head() == z) {
                result = true;
                if (result == true) {
			System.out.println(result);
                    return result;
                    
               }
                else{
                    result=false;
                    System.out.println(result);
                    return result;
                } 
            }          
          
                  else {
                if (c.notEmpty() == true) {
                    c = c.tail();

                   istEnthalten(z, c);
                }
           }
        }

return result;
}
}

Er gibt mir jetzt auch schon true aus wenn die gesuchte Zahl vorkommt.
Das er false ausgibt wenn die gesuchte Zahl nicht vorhanden ist funktioniert
noch nicht so ganz und ich hab keine Ahnung warum.
 

Leroy42

Top Contributor
Code:
public static boolean istEnthalten(int z, ListOfInt c) {
  return c != null &&
            (c.head() == z || (istEnthalten(z, c.tail()));
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Rekursives suchen im TreeMenu Java Basics - Anfänger-Themen 10
M Rekursives Programm zum Anzeigen von Primzahlen Java Basics - Anfänger-Themen 3
C Rekursives Backtracking beim Spiel Peg Java Basics - Anfänger-Themen 22
G Rekursives Programmieren --> harmonische Reihe Java Basics - Anfänger-Themen 3
S Rekursives Problem.... Java Basics - Anfänger-Themen 16
S Rekursives Durchlaufen eines Verzeichnisses - AccessDeniedException behandeln Java Basics - Anfänger-Themen 1
S Rekursives Zählen einer Zahl Java Basics - Anfänger-Themen 8
J Rekursives Parsen (ohne Reg Expressions) Java Basics - Anfänger-Themen 8
S Rekursives Umdrehen, Spiegeln. etc. von Strings Java Basics - Anfänger-Themen 3
I Rekursives Löschen in Binärem Suchbaum Java Basics - Anfänger-Themen 2
L rekursives spiel programmieren Java Basics - Anfänger-Themen 4
G Rekursives aufrufen führt zu StackOverflowError Panel durchl Java Basics - Anfänger-Themen 5
G Primzahlentester als rekursives Programm! Java Basics - Anfänger-Themen 13
H Rekursives einlesen von Lokalen Ordner Java Basics - Anfänger-Themen 4
KogoroMori21 Wann ist der richtige Zeitpunkt, um sich Hilfe zu suchen? (Bin Informatik-Student) Java Basics - Anfänger-Themen 10
I String nach Wort suchen Java Basics - Anfänger-Themen 6
O Namen (mit Umlauten und ß) in einer ArrayList suchen Java Basics - Anfänger-Themen 5
B Alle Links in einem Text suchen und ersetzen mit einem neuen Link Java Basics - Anfänger-Themen 18
CptK Koordinate in Liste suchen Java Basics - Anfänger-Themen 20
Ellachen55 Wie nach häufigste Werte im Array suchen? Java Basics - Anfänger-Themen 2
B Java Mail: suchen von mehreren Emailadressen Java Basics - Anfänger-Themen 5
D Erste Schritte Wert im Array suchen Java Basics - Anfänger-Themen 12
B Suchen und sortieren Java Basics - Anfänger-Themen 10
J Wörter aus Textdatei suchen Java Basics - Anfänger-Themen 2
A Erste Schritte Buchstaben im Array suchen Java Basics - Anfänger-Themen 8
F In List Rekursiv suchen Java Basics - Anfänger-Themen 12
S Wort suchen und ersetzen in einer Datei Java Basics - Anfänger-Themen 6
S Amazon Produktbeschreibung auslesen und nach Keywords suchen Java Basics - Anfänger-Themen 2
C In ArrayList suchen Java Basics - Anfänger-Themen 6
G nach 9 - stelliger Nummer suchen Java Basics - Anfänger-Themen 7
D Liste nach 2 gleichen Einträgen suchen Java Basics - Anfänger-Themen 4
N Operatoren Suchen nach einer bestimmten Eingabe (durch Scanner) Java Basics - Anfänger-Themen 7
C char in String suchen und durch anderen String ersetzen Java Basics - Anfänger-Themen 2
Y Explizites Suchen Java Basics - Anfänger-Themen 13
G Zeichen suchen und Ausgeben. Java Basics - Anfänger-Themen 3
K String in String-Array suchen Java Basics - Anfänger-Themen 11
T Suchen in sortiertem Feld Java Basics - Anfänger-Themen 2
K Im String Array suchen Java Basics - Anfänger-Themen 8
E Belebeste Area im Game of Life suchen Java Basics - Anfänger-Themen 0
A Hash Tabelle Element suchen Java Basics - Anfänger-Themen 1
L Name im Array suchen Java Basics - Anfänger-Themen 12
I Innerhalb einer Methode suchen und hinzufügen. Neues Objekt in Suche dann? Java Basics - Anfänger-Themen 8
F Methoden Kontaktliste - String in einem Array suchen und ausgeben Java Basics - Anfänger-Themen 3
A Suchen und ersetzen Java Basics - Anfänger-Themen 13
P Teilstring suchen Java Basics - Anfänger-Themen 3
S Wort in Text suchen und ersetzen Java Basics - Anfänger-Themen 3
D String in Datei suchen und löschen Java Basics - Anfänger-Themen 2
A Nach dem Objekt suchen Java Basics - Anfänger-Themen 1
F In einem String nach einem String suchen und Zeichen danach ausgeben Java Basics - Anfänger-Themen 6
K Maximum Suchen Array Java Basics - Anfänger-Themen 6
W .txt auslesen und nach schlüsselbegriffen suchen Java Basics - Anfänger-Themen 7
S Suchen in Arrays Java Basics - Anfänger-Themen 7
J Input/Output String Suchen und Ersetzen Java Basics - Anfänger-Themen 8
A Kleinste Ziffer im Array suchen um Sortierung zu erzeugen Java Basics - Anfänger-Themen 2
N Java Programm zum Suchen und Ersetzen von Text Dateien Java Basics - Anfänger-Themen 10
T String in Array suchen Java Basics - Anfänger-Themen 9
G Erste Schritte Nach bestimmten Dateien suchen und dann in die Registry schreiben. Java Basics - Anfänger-Themen 6
B Nach regulären Ausdrücken suchen Java Basics - Anfänger-Themen 14
C Bestimmte Informationen von Webseite suchen Java Basics - Anfänger-Themen 13
B Suchen und ersetzten mit \ ? Java Basics - Anfänger-Themen 9
A String in String suchen Java Basics - Anfänger-Themen 3
J Nach einem Wert suchen +/- x Java Basics - Anfänger-Themen 8
D Binäres Suchen Java Basics - Anfänger-Themen 11
N Weg suchen bei Adjazenzmatrix Java Basics - Anfänger-Themen 2
E Suchen mit Hashfunktion ?! Java Basics - Anfänger-Themen 7
C Binäres Suchen mit Rekursion Java Basics - Anfänger-Themen 5
I Erste Schritte Ein Zeichen in einem Array Suchen Java Basics - Anfänger-Themen 8
N Binär suchen: Java Basics - Anfänger-Themen 4
D In Hashtable suchen Java Basics - Anfänger-Themen 3
J In String suchen Java Basics - Anfänger-Themen 14
D Nach String "{" suchen Java Basics - Anfänger-Themen 4
3 3. Element mit regulären Ausdruck suchen Java Basics - Anfänger-Themen 12
L String suchen und ersetzten, ohne neue Datei Java Basics - Anfänger-Themen 4
M Notiz suchen-Programm Java Basics - Anfänger-Themen 3
F Zusammenhängend Komponente suchen(Graph) Java Basics - Anfänger-Themen 4
M Teilmatrix suchen Java Basics - Anfänger-Themen 16
B Java nach bestimmter dateiendung suchen Java Basics - Anfänger-Themen 6
B Element in Folge suchen Java Basics - Anfänger-Themen 7
T String aus einer ArrayList suchen Java Basics - Anfänger-Themen 7
V Doppelte Zahl suchen Java Basics - Anfänger-Themen 14
G List suchen und doppelte rausfiltern Java Basics - Anfänger-Themen 3
R Datentypen In String nach String suchen und hinzufügen Java Basics - Anfänger-Themen 2
D Textdatei einlesen und darin suchen Java Basics - Anfänger-Themen 11
I Wie kann ich ein Wort in einem String suchen Java Basics - Anfänger-Themen 3
P char[] - suchen/ löschen Java Basics - Anfänger-Themen 6
S Datentypen In ArrayList nach Element suchen und Position ausgeben Java Basics - Anfänger-Themen 9
D Array Fehler / groesste Primzahl suchen Java Basics - Anfänger-Themen 4
C Objekt aus Liste suchen Java Basics - Anfänger-Themen 6
S Binärbaum - Klasse Knoten - Methode Suchen Java Basics - Anfänger-Themen 5
D In String suchen und extrahieren Java Basics - Anfänger-Themen 13
B Suchen nach Teilstring, um Text danach ausgeben Java Basics - Anfänger-Themen 11
H Höchsten int-Wert(key) aus einer Hashmap suchen Java Basics - Anfänger-Themen 19
J Feld in Tabelle suchen Java Basics - Anfänger-Themen 8
Developer_X Strings in JTextarea suchen Java Basics - Anfänger-Themen 15
F Datei suchen --> Pfad als String speichern Java Basics - Anfänger-Themen 8
R einen gegebenen String in einem String suchen Java Basics - Anfänger-Themen 6
J Suchen nach ArrayObjekten Java Basics - Anfänger-Themen 17
? Algo gleicher Buchstabe in 2 Wörtern suchen Java Basics - Anfänger-Themen 16
G String suchen Java Basics - Anfänger-Themen 4
X Attribut in n Objekten suchen Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben