# Cannot make a static reference to the non-static method



## Raorkon (5. Nov 2007)

Hallo zusammen

ich habe folgendes Problem:

ich will die Eingabe eines Monatsnamen überprüfen und das will ich übungstechnische in einer anderen Klasse machen. dazu habe ich folgendes Programm geschrieben:


```
package maz;

import java.io.StreamTokenizer;

public class maz_start 
{
	public static void main(String[] args) 
	{	

		berechneMAZ test = new berechneMAZ();
		pruefen test1 =new pruefen();
		String monat="";
		int jahr=0;
		try{
			System.out.println("Geben Sie den Monat und das Jahr an: (MM JJJJ)");
			StreamTokenizer eingabe=new StreamTokenizer(System.in);
			eingabe.nextToken();
			monat=eingabe.sval;
			if(pruefen.pruefe(monat))
			eingabe.nextToken();
			jahr=(int)eingabe.nval;
			}
		catch(Exception e){System.out.println("fehlerhafte Eingabe");}
		berechneMAZ.rechnen(jahr,monat);
	}

}
```


```
package maz;

public class pruefen 
{
	public boolean pruefe(String pmonat)
	{
		String mon_name[]={"Januar","Februar","März","April","Mai","Juni","July","August","September","Oktober","November","Dezember"};
		int k=0;
		for (int i=0;i<12;i++)
		{
[quote]			if(pmonat.compareTo(mon_name[i])<0)
			{k=1;break;}
		}
		if(k==1)
			return true;
		else
			return false;[/quote]
	}
}
```

nun erhalte ich den Fehler:
Cannot make a static reference to the non-static method pruefe(String) from the type pruefen
Leider weiß ich nicht was ich falsch mache 

Ich habe sage doch das ich nen Boolean zurückerwarte. Bitte nicht den restlichen Programmtext kritisieren, das ist alles nur zur Übung 
Wobei ich doch noch ne Frage dazu hätte:

```
if(pmonat.compareTo(mon_name[i])<0)
			{k=1;break;}
		}
		if(k==1)
			return true;
		else
			return false;
```
da gibt es bestimmt ne sinnvoller Methode oder?

thx schon mal im vorraus


----------



## Der Müde Joe (5. Nov 2007)

if(pruefen.pruefe(monat)) 

-->

if(test1.pruefe(monat))


----------



## Raorkon (5. Nov 2007)

aahhh, ich habe es doch gewußt das es nur ne Kleinigkeit war.

thx


----------



## fehlerfinder (6. Nov 2007)

Raorkon hat gesagt.:
			
		

> Cannot make a static reference to the non-static method


Vielleicht noch kurz zum Hintergrund:
Der Aufruf von "pruefe" erfolgt aus main() und main ist als "static" definiert. "pruefe" hingegen ist nicht als "static" definiert und genau darauf weist dich diese Fehlermeldung hin (was natürlich nix an der Korrektheit des Beitrags von "Der Müde Joe" ändert ;-) )


----------



## Der Müde Joe (6. Nov 2007)

fehlerfinder hat gesagt.:
			
		

> Raorkon hat gesagt.:
> 
> 
> 
> ...



 :noe: 

"pruefe" ist nicht statisch, darum kann man es auch nicht über den Klassennamen aufrufen (Klasse.methode() ).
Ob in statischer Methode oder sonst wo ist egal.


----------



## fehlerfinder (6. Nov 2007)

Der Müde Joe hat gesagt.:
			
		

> fehlerfinder hat gesagt.:
> 
> 
> 
> ...


Jo - so wird's klarer. Stimmt - dass main() static ist, ist egal


----------

