# static methode innerhalb einer klasse !



## reliC (27. Nov 2007)

Hi all,

Also ich habe da ein kleines verständnissproblem mit der Objektorientierung beziehungsweise bei einer static methode innerhalb einer klasse und wie ich das aufrufen darf und wie nicht bekomms einfach nicht gebacken aber hier mal mein code:


```
public class Tageszeit {

	public int stunden;
	public int minuten;
	public int sekunden;
	
	
	Tageszeit(int stunden, int minuten, int sekunden){
		
		this.stunden = stunden;
		this.minuten = minuten;
		this.sekunden = sekunden;
		
		
	}
	
	Tageszeit(int stunden, int minuten){
		
		this.stunden = stunden;
		this.minuten=minuten;
		this.sekunden=0;
	}
	
	
	
	int sekundenSeitMitternacht(){
		
		int ergebnis;
		ergebnis = (stunden *3600) + (minuten * 60);
		
		return ergebnis;
		}
	
	boolean vor() {
		if(stunden<12)
			return true;
		else
			return false;
	}
	
	public String toString(){
		String stunden;
		String minuten;
		String sekunden;
	
		stunden = String.valueOf(this.stunden);
		minuten = String.valueOf(this.minuten);
		sekunden = String.valueOf(this.sekunden);
	
		return stunden + ":" + minuten + ":" + sekunden;
		
		
	}
	
	
	boolean istFrueherals(Tageszeit eins, Tageszeit zwei){
		
		if(eins.sekundenSeitMitternacht() < zwei.sekundenSeitMitternacht())
			return true;
		else
			return false;
		
		
	}
	
	
	static boolean ampm(){
		
		

		
	}
	
}
```

also die static boolean ampm() hat ja nen rückgabewert true oder false das is mir klar nun soll diese da toString methode so ansprechen das die ampm() methode bestimmt ob die Tageszeit beim aufruf von toString eben im ampm Format ausgibt oder im 24h-format....
Nun habe ich das versucht mit verschiedenen aufrufen wollte in der static die methode vor() anwenden und diese wenn true eben als "am" beim toString ausgeben, nur kann ich in der static methode leider die anderen methoden aus der klasse nicht aufrufen....Nun eben die frage wie reallisiere ich das am besten bzw kann ich überhaupt in der static irgendwas von den anderen methoden verwenden oder sei es nur den constructor oder etwas in der art oder geht das einfach gar nicht und ich muss da mit eigenen variablen arbeiten??! 

Wäre für die hilfe sehr dankbar...


Greetz reliC


----------



## Tobias (27. Nov 2007)

Diese Methode sollte nicht static sein, da sie von den Attributwerten der spezifischen Objekte abhängt.

mpG
Tobias


----------



## reliC (28. Nov 2007)

so hab das mal soweit dann umgeändert nun hab ich noch ein kleines problem mit der ausgabe und weiß grad nich wo der wurm liegt hab verschiedene ansätze wieder probiert aber der will halt grad nich aber ersmal hier der code:



```
public class Tageszeit {

	public int stunden;
	public int minuten;
	public int sekunden;
	public static boolean ampm;
	
	Tageszeit(int stunden, int minuten, int sekunden){
		
		this.stunden = stunden;
		this.minuten = minuten;
		this.sekunden = sekunden;
		
		
	}
	
	Tageszeit(int stunden, int minuten){
		
		this.stunden = stunden;
		this.minuten=minuten;
		this.sekunden=0;
	}
	
	
	
	int sekundenSeitMitternacht(){
		
		int ergebnis;
		ergebnis = (stunden *3600) + (minuten * 60);
		
		return ergebnis;
		}
	
	boolean vor() {
		if(stunden<12)
			return true;
		else
			return false;
	}
	
	public String toString(){
		String stunden;
		String minuten;
		String sekunden;
		
		minuten = String.valueOf(this.minuten);
		sekunden = String.valueOf(this.sekunden);
		
		if(ampm=true)
		{
			if(vor()==true){
			stunden = String.valueOf(this.stunden);
			
				return stunden + ":" + minuten + ":" + sekunden+"am";
			}else
			{
			stunden = String.valueOf(this.stunden-12);	
				return stunden + ":" + minuten + ":" + sekunden+"pm" ;
		
			}}
			else{
			stunden = String.valueOf(this.stunden);
			
				return stunden + ":" + minuten + ":" + sekunden;
		}
		
		
		
		
	}
	
	
	boolean istFrueherals(Tageszeit eins, Tageszeit zwei){
		
		if(eins.sekundenSeitMitternacht() < zwei.sekundenSeitMitternacht())
			return true;
		else
			return false;
		
		
	}
	
	

	
}












public class Test {

	public static void main(String []args){
		
		
		
	Tageszeit time = new Tageszeit(15,20,30);
	
	
	
	
	
	time.vor();
	System.out.println(time.toString());
	
		
		
		
		
		
		
		
		
	}
	
}
```


mein problem liegt darin das wenn ich in der Test klasse Tageszeit.ampm=true; setze wird mir die uhrzeit schön in AM und PM modus angezeigt sobald das aber ja false ist bzw nicht geschrieben wird die Tageszeit.ampm....dann sollte der sie mir im 24H Format ausgeben nur tut er das nich. schaut ma in der Methode toString nach ob ich da nich ein verschachtelungsfehler bei den if/else gemacht habe....weiß grad echt nich wieso der nich will.


greetz

reliC


----------



## SlaterB (29. Nov 2007)

if(ampm=true) 

weist ampm den Wert true zu und liefert IMMER true,
schreibe stattdessen
if(ampm==true) 
!

oder noch besser
if(ampm) 
dann kann dieser Fehler gar nicht auftreten


----------



## Guest (29. Nov 2007)

ahhhh das klappt danke für die hilfe  very nice


greetz reliC


----------



## ms (29. Nov 2007)

Oder Literale grundsätzlich als erstes in einer Bedingung anschreiben.

if (true = ampm) ... ergibt einen Compilefehler.

ms


----------

