# Variable in 2 verschiedenen public static Methoden nutzen



## GNA (26. Nov 2010)

Hallo,
ich soll eine Klasse Datum mit den folgenden zwei Methoden (public static) schreiben. Eine Methode, die überprüft, ob ein gegebenes Jahr ein Schaltjahr im Gregorianischen Kalen-der ist. Der Rückgabetyp ist boolean. Die andere Methode, soll den Wochtentag Mo, ..., So des Datums bestimmen und als Zahl von 0 bis zurückgibt. Dabei sollen nur Jahre ab 1900 berücksichtigt werden.

Mein Problem:
Ich will die Variablen year und schaltjahr in beiden Methoden nutzen, schaff es aber nicht, da beide leider in public static definiert sein müssen  . Ich müsste diese Variable irgendwie zurückgeben, aber ich glaub ich mach die getter methode falsch, bin mir aber nicht sicher, ob diese funktioniert, da ich sie eigentlich nur für private Variablen kenne.

Danke für die Hilfe 


```
package javaapplication2;

public class Datum {
boolean schaltjahr;
    public static void schaltjahr(int year, boolean schaltjahr) {
        schaltjahr = (year % 4 == 0 && (year % 100 != 00 || (year % 400 == 0)));
        year = 2100;
    }

    public static void main(String[] args) {
        int days = 5;
        int months = 11;
        int yearTransfer1;
        int yearTransfer2;
        int daysTransfer;
        int since1900;

        yearTransfer1 = (year - 1900) * 365;
        yearTransfer2 = (year - 1900) / 4;

        if (schaltjahr == true) {
            yearTransfer2--;
        }

        switch (months) {
            case 1:
                daysTransfer = 31;
                break;

            case 2:
                daysTransfer = 28;
                break;

            case 3:
                daysTransfer = 31;
                break;

            case 4:
                daysTransfer = 30;
                break;

            case 5:
                daysTransfer = 31;
                break;

            case 6:
                daysTransfer = 30;
                break;

            case 7:
                daysTransfer = 31;
                break;

            case 8:
                daysTransfer = 31;
                break;

            case 9:
                daysTransfer = 30;
                break;

            case 10:
                daysTransfer = 31;
                break;

            case 11:
                daysTransfer = 30;
                break;

            case 12:
                daysTransfer = 31;
                break;}

        since1900 = yearTransfer1 + yearTransfer2 + daysTransfer + days;
        since1900 = since1900 % 7;

        switch (since1900) {
            case 0:
                System.out.println("Sunday");
                break;

            case 1:
                System.out.println("Monday");
                break;

            case 2:
                System.out.println("Tuesday");
                break;

            case 3:
                System.out.println("Wednesdayday");
                break;

            case 4:
                System.out.println("Thursday");
                break;

            case 5:
                System.out.println("Fridayday");
                break;

            case 6:
                System.out.println("Saturdayday");
                break;

            default:
                System.out.println("wtf");
        }
    }
}
```


----------



## Ralph-Uwe (26. Nov 2010)

Hallo,

in der main Methode sind zwei Variabeln nicht oder nicht richtig definiert nämlich: schaltjahr und year,
achte dabei auf die Sichtbarkeit von den Variabeln .

Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 2.4 Blöcke, Initialisierung und Sichtbarkeit

Gib in der Methode schaltjahr statt void ein boolean zurück und übergebe nur das Jahr.

```
public static boolean schaltjahr(int year) {
   schaltjahr = ...
   return schaltjahr;
}
```

So eine ähnliche Methode kannst Du für die Wochentag abfrage auch erstellen.


Welcher Tag ist eigendlich Fridayday oder Wednesdayday ?


----------



## Murray (26. Nov 2010)

Wenn Variablen in Deiner Klasse als "static" deklariert werden, können sie auch in static-Methoden genutzt werden:


```
public class A {
  static int x;

  static int f1( int y) {
     return x+y;
  }

  static int f2( int z) {
     return x -z;
  }
}
```

Bei Deiner schaltjahr-Methode ist year aber ein Parameter und damit nur eine lokale Variable innerhalb der Methode - die Zuweisung am Ende bewirkt nichts


----------



## GNA (27. Nov 2010)

Danke für die Hilfe,
ich musste nur die variablen als static deklarieren, dann hat alles gepasst 



> Welcher Tag ist eigendlich Fridayday oder Wednesdayday ?


der tag an dem ich meine copy paste listen nochmal kontrollese


----------

