# Unerklärliche Fehlermeldung || ';' expected



## Flat Eric (15. Feb 2010)

Ich hab ein Problem beim Kompilieren des Quellcodes unten.. Ich bekomm immer die Fehlermeldung " ';' expected" in der rot markierten Zeile.Die rot markierte Zeile war in der Aufgabenstellung vorgegeben, deswegen weiß ich nicht warum die Fehlerhaft ist. Weiß jemand was das soll? 




```
import inout.*;
public class Test
{
public static void main(String args[])
{

[COLOR="Red"] boolean istElement(int feld[], int gesucht,int links, int rechts)[/COLOR]
 {
  int haelfte = feld.length/2;
  boolean b = true;
  while(b=!false)
  {
  if(gesucht==feld[haelfte])
  {return true}
  else if( gesucht<feld[haelfte])
  {
      for(int i, i<=(feld.length)/2,i++)
      {
          if(gesucht==feld[i])
          {return true;}
          else {return false;}
        }
        else 
        { for(int i= feld[haelfte], i <=feld.length,i++)
            {
                if(gesucht == feld[i]
                { return true;}
                else{ return false;}
            }
        }
    }
  

 }
 

}
}
```


----------



## eRaaaa (15. Feb 2010)

Methoden in Methoden gehen nicht! DIe Methode istElement muss also aus der main raus....


----------



## Flat Eric (15. Feb 2010)

Ahh danke :toll:


----------



## Flat Eric (15. Feb 2010)

Jetzt würd ich gerne meine Methode ausprobieren, aber beim aufruf der Methode  bekomm  ich den Fehler ".Class expected". Die Methode befindet sich doch in der selben Klasse?!
Edit: Ah und sry das ich den Beitrag nicht editiert hab :X


```
import inout.*;
public class Test
{

 boolean istElement(int feld[], int gesucht,int links, int rechts)
 {
  int haelfte = feld.length/2;
  boolean b = true;
  while(b=!false)
  {
  if(gesucht==feld[haelfte])
  {b =true;}
  else if( gesucht<feld[haelfte])
  {
      for(int i=0; i<=feld[haelfte];i++)
      {
          if(gesucht==feld[i])
          {b= true;}
          else {b= false;}
        }}
       else
        { for(int i= feld[haelfte]; i <=feld.length;i++)
            {
                if(gesucht == feld[i])
                { b = true;}
                else{ b= false;}
            }
        }
    }
 

if(b==true)
{System.out.println("hat geklappt");}
else 
{System.out.println("nicht geklappt");}
return b;
}

public static void main(String args[])
{
int feld[] = { 1,2,3,4,5,6,7,8};
int rechts,links;
int gesucht = 3;
istElement(feld[],gesucht,rechts,links);// [B]HIER IST DER FEHLER[/B]

}

}
```


----------



## ARadauer (15. Feb 2010)

http://www.java-forum.org/stichwort...ic-method-cant-referenced-static-context.html


----------



## SlaterB (15. Feb 2010)

istElement() ist eine normale Methode einer Klasse und kann nur an entsprechenden Objekten aufgerufen werden,
nicht einfach so von überall aus,
Grundlagen/ Beispielprogramme angeschaut?


----------



## eRaaaa (15. Feb 2010)

1.) Zeile 44 --> istElement(feld,gesucht,rechts,links); (die Klammern weg  )
2.) das ist keine statische Methode, also brauchst du erst ein Objekt der Klasse... also entweder statisch machen oder new Test().istElement(...);


----------



## Flat Eric (15. Feb 2010)

Super, vielen Dank leute. Er kompiliert jetzt Fehlerfrei  Anscheinend hab ich aber irgendwo Quatsch gemacht, denn ich  bekomme keinerlei Ausgabe beim Aufruf des Programms.



```
//Neu dazugekommen
static int gesucht=0,links=0,rechts=0;
static int feld[]= { 1,2,3,4,5,6,7,8};
//Konstruktor
public Test(int feld[], int gesucht,int links, int rechts)
{
this.feld=feld;
this.gesucht=gesucht;
this.links=links;
this.rechts=rechts;
}
[....](alles gleich) bis[...]

public static void main(String args[])
{
int feld[] = { 1,2,3,4,5,6,7,8};
int rechts=0,links=0;
int gesucht = 3;
Test suche = new Test(feld,gesucht,rechts,links);
suche.istElement(feld,rechts,links,gesucht);

}
```


----------



## SlaterB (15. Feb 2010)

> while(b=!false)

bedeutet:
weise b dem Gegenteil von false zu (true) und werte daher als Schleifenbedingung while(true) aus -> Endlosschleife

dagegen
while(b!=false)

bedeutet:
wiederhole die Schleife, solange b true ist,

ob b in deinen vielen if/else-Fällen auch immer irgendwann zu false = Ende gewechselt wird, darf bezweifelt werden


----------

