# for und if schleife kombinieren



## alex96552 (18. Mrz 2016)

Hallo zusammen,
und zwar hänge ich als an der Aufgabe, wo man die Teilbarkeit durch 4 berechnen soll, indem man prüft ob die letzen 2 Ziffern der eingegebenen Zahl durch 4 teilbar ist.
Ich habe ewig nachgedacht und ich komm nur auf die Lösungsidee:

wenn die letzen 2 Zahlen durch 4 teilbar sein müssen, dann darf das ergebnis durch 4 (hier z) keine Kommazahl sein.


```
public void teilbarkeit(int i){
        for(z=0;z<=i;z++){
            m=i%100;

            if(m/4==z){
                System.out.println("Die Zahl ist durch 4 teilbar");
            }
        }
```

das scheint aber nicht zu klappen. darf man denn die for und if schleife in der Art kombinieren?
die Rechenregel muss aufjedenfall so in dem Code stehen...könnte man das auch anders lösen?

danke schonmal


----------



## Joose (18. Mrz 2016)

Code bitte in Code-Tags packen, danke!  
[java] .. dein code ... [/java]

Es gibt keine if-Schleife, siehe http://if-schleife.de/
Für was brauchst du hier überhaupt die for-Schleife? Was für Werte stellen "i" bzw. "z" dar?
Geht es darum die übergebene Zahl "i" auf die Teilbarkeit durch 4 zu testen?


----------



## alex96552 (18. Mrz 2016)

ja es geht darum ob die zahl (hier die variabel i) durch 4 teilbar ist.
in der aufgabe ist angegeben dass eine zahl (i) durch 4 teilbar ist, wenn die aus den letzten 2 ziffern gebildete zahl i , durch 4 teilbar ist. 
und wie schon erwähnt habe ich mir gedacht, dass wenn eine zahl durch 4 teilbar sein soll, keine Kommazahl enstehen kann (hier z). 
also wollte ich mit der for schleife überprüfen ob eine nicht-kommazahl für z rauskommt.
kann aber auch sein dass der ansatz von mir falsch ist aber was anderes fällt mir leider nicht ein

ach wenn man zu lange an java sitzt, kann man irgenewann nicht klar denken.

mal angenommen wir geben die zahl 16 ein und testen die teilbarkeit auf 4. hier können wir die division mit der while schleife ja solange laufen lassen und damit gucken ob man auf den wert 0 kommt. 
man denkt ewig nach und will keine voreiligen threads erstellen und dann fällt einem die lösung doch ein aber dankeschön und das mit den code tags wird gemacht 

hm ich hab jetzt den code hier gechrieben


```
m=i%100;
                while(m>0){
                m=m/4;
                if(m==0){
                    System.out.println("Die Zahl ist durch 4 teilbar");
                }}
```
aber so scheint es auch nicht zu klappen  
was isr denn an der schleife und der if anwesung falsch  darf man die so kombinieren?


----------



## Joose (18. Mrz 2016)

Wie kannst du kontrollieren ob eine Zahl restlos durch eine andere teilbar ist? -> Indem du den Modulo Operator verwendest.

```
m = i % 100; // die letzten beiden Ziffern bekommen
if(m % 4 == 0) { // Wenn die Zahl m restlos durch 4 teilbar ist ....
    System.out.println("Die Zahl ist durch 4 teilbar");
}
```


----------



## alex96552 (18. Mrz 2016)

ajajaj wie konnte ich nicht daran denken. 
hab den irgendwie total ausgeblendet aber dankeschön jetzt klappt es


----------



## Joose (18. Mrz 2016)

alex96552 hat gesagt.:


> ```
> m=i%100;
> while(m>0){
> m=m/4;
> ...



Natürlich kannst du while-Schleife und if Anweisungen verschachteln.
Aber geh deinen Code doch einfach mal mit Stift+Papier durch. Wenn "m" den Wert 12 hat. Dann wirst du einen Fehler bei deiner Schleife finden.

EDIT: Vermeide Doppelposts, für eine gewisse Zeit (glaube 30 Minuten) kann man Beiträge editieren.


----------



## Xyz1 (18. Mrz 2016)

Das sollte dein Problem schon beheben:

```
/**
     * @author DerWissende on 03/18/2016
     */
    private static boolean durch4teilbar(int i) {
        System.out.print(i + " ");
        int h = i % 100;
        return h / 4 == h / 4.0;
    }

    /**
     * @author DerWissende on 03/18/2016
     */
    public static void main(String[] args) {
        System.out.println(durch4teilbar(3));
        System.out.println(durch4teilbar(4));
        System.out.println(durch4teilbar(3));
        System.out.println(durch4teilbar(95));
        System.out.println(durch4teilbar(96));
        System.out.println(durch4teilbar(97));
    }
```


```
3 false
4 true
3 false
95 false
96 true
97 false
```

Mit der Schleife musst du mal schauen.


----------

