Hab da mal ne Anfängerfrage



  • Hi,
    ich versuche gerade mir Java aus dem Buch "Java in 21 Tagen" beizubringen (auch wenn das Buch nicht der Hit ist, wei ich finde).

    Hab da mal ein Beispielprogramm bzw. Klasse abgetippt um es besser zu verstehen, hier erstmal der Code, danach meine Frage:

    public class hh {
    	public static void main(String[] args) {
    
    		int yearIn = 2005;
    		int monthIn = 12;
    
    		if (args.length > 0)
    			monthIn = Integer.parseInt(args[0]);
    		if (args.length >1)
    			yearIn = Integer.parseInt(args[1]);
    
    		System.out.println(monthIn + "/" + yearIn + " has " + 
    		countDays(monthIn, yearIn)+ " days");             /HIER BLICK ICHS NICHT
    
    	}
    
    	static int countDays(int month, int year){
    		int count = -1;
    		switch(month){
    		case 1:
    		case 3:
    		case 5:
    		case 7:
    		case 8:
    		case 10:
    		case 12:
    			count = 31;
    			break;
    		case 4:
    		case 6:
    		case 9:
    		case 11:
    			count = 30;
    			break;
    		case 2:
    			if (year % 4 ==0)
    				count = 29;
    			else	count = 28;
    		}
    		return count;
    	}
    	/**
    	 * @param args
    	 */
    
    }
    

    Jetzt die Frage: Wieso sthet in der markierten Zeile

    countDays(monthIn, yearIn)

    ?
    Ich mein wieso heisst es in den KLammern monthIn und yearIn?

    Könnte mir das jemand verständlich erklären?



  • countDays() erwartet zwei Integer-Parameter, aus denen es die Monatstage berechnet - in dem Ausdruck rufst du es mit den lokalen Variablen monthIn und yaerIn auf, die du vorher aus der Kommandozeile extrahiert hast.



  • KLingt ganz logisch.

    Aber um es noch mal zu verdeutlichen:

    Das heisst also, dass counDays() nur die vom Benutzer eingegeben Werte (die ja in monthIN/yerIN gespeichert sind) im Aufruf drinsthehen haben will, oder?

    Also wenn ich zum Beispiel hätte:
    secIn,minIn,hourIn,dayIn müsste der Methodenaufruf Blabla(secIn,minIn,hourIn,dayIn) heissen.
    Hab ich das richtig verstanden?

    [edit]: noch was anderes: Kannst du mir evtl. ein gutes Buch empfehlen?



  • Du mußt immer die Parameter angeben, die du benötigst - wenn also eine Methode mit Zeitangaben füttern willst, brauchst der Aufruf Werte für Stunde, Minute und Sekunde (die Namen sind dabei egal - Hauptsache du weißt, was eine Variable bedeuten soll; die Methode spricht die Werte unter den Parameternamen an (bei deiner countDays-Funktion wird der Wert von monthIn nach month und yearIn nach year kopiert).

    @Buch: Leider nein, ich hab' auch mit diesem Schnellkurs die Java-Grundlagen gesammelt - und etwas Vorkenntnissen in C(++).



  • Ich glaube ich verstehs so langsam, danke!!

    CStoll schrieb:

    (bei deiner countDays-Funktion wird der Wert von monthIn nach month und yearIn nach year kopiert).

    Macht Java das automatisch? Oder machen das alle OOP-sprachen so?



  • Ja, das machen alle gängigen Sprachen so, solange sie den Begriff "Funktionsparameter" verstehen 😃 (sprich: das funktioniert sogar in reinem C oder Pascal)



  • Ok, danke für die Infos!


Anmelden zum Antworten