for und if schleife kombinieren

alex96552

Mitglied
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.

Java:
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

Top Contributor
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

Mitglied
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

Java:
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?
 
Zuletzt bearbeitet von einem Moderator:

Joose

Top Contributor
Wie kannst du kontrollieren ob eine Zahl restlos durch eine andere teilbar ist? -> Indem du den Modulo Operator verwendest.
Java:
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");
}
 

Joose

Top Contributor
Java:
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?

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.
 
X

Xyz1

Gast
Das sollte dein Problem schon beheben:
Java:
    /**
     * @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));
    }

Code:
3 false
4 true
3 false
95 false
96 true
97 false

Mit der Schleife musst du mal schauen.
 

Neue Themen


Oben