for-loop

Bitte aktiviere JavaScript!
Hallo zusammen
Ich kann leider den Output nicht ganz nachvollziehen. Input ist 4 und Output ist 0011. Könnt ihr mir helfen? Vielen Dank für eure Hilfe!!

Java:
public class Func 
{
    private int n;

    public Func()
    {
        n = 0;
    }
        public void func( int n )
        {
        String toPrint = "" ;
            for( int i = 0; i < 4; i++ ){
                toPrint = (n % 3) + toPrint ;
                n = n / 3 ;
        }
        System.out.println( toPrint ) ;
        }

}
 
Zuletzt bearbeitet von einem Moderator:
A

Anzeige




Schau mal hier —> (hier klicken)
Code:
public class Func  
{
    private int n;

    public Func()
    {
        n = 0;
    }
        public void func( int n )
        {
        String toPrint = "" ;
            for( int i = 0; i < 4; i++ ){
                toPrint = (n % 3) + toPrint ; 
                n = n / 3 ;
        }
        System.out.println( toPrint ) ;
        }

}
kann man besser lesen.
 
Sorry Leute. War mein erster Beitrag. Ich konnte nun mit dem Debugger so zu der Lösung 0011 kommen. Falls es unten zu Umständlich ist - bitte melden:
  • 4 Durchgänge gemäss for Schleife
  • Erster Durchgang: 4 Modulo 3 = 1 -> in toPrint
    • 4/3 -> 3 passt einmal in 4 -> neuer n Wert (Input) = 1
  • Zweiter Durchgang: 1 Modulo 3 = 1 -> in to Print
    • 1/3 -> 3 passt nicht mehr rein -> neuer n Wert = 0
  • Dritter Durchgang: 0 Modulo 3 = 0
    • 0/3 -> 3 passt nicht mehr rein -> neuer n Wert = 0
  • Vierter Durchgang: 0 Modulo 3 = 0
 
Wenn man die Methode, func, auch vernünftig benennt, wird deren Ablauf auch klar:
Java:
public class CN {
public static void main(String[] args) {
    CN cn = new CN();
    for (int i = 0; i <= 9; i++) {
        System.out.println(i + " " + cn.fromBase10ToBase3(i));
    }
}

String fromBase10ToBase3(int n) {
    return String.format("%1$4s", Integer.toString(n, 3)).replace(' ', '0');
}
}

Gibt:
Code:
0 0000
1 0001
2 0002
3 0010
4 0011
5 0012
6 0020
7 0021
8 0022
9 0100

Das replace ist etwas unschön es lässt sich aber nicht vermeiden. ;)
 
Wenn man die Methode, func, auch vernünftig benennt, wird deren Ablauf auch klar:
Diese Antwort wäre korrekt, wenn der TE diese Funktion mit einem klaren Ziel selbst geschrieben hätte. Vermutlich ist es allerdings nicht so.

Ich finde es nicht zielführend, einem offensichtlichen Anfänger/in, Code vor die Nase zu setzen, den er/sie nur schwer verstehen kann. Sinnvolle Antworten sollten zumindest ungefähr auf dem selben Level bleiben.

Das wollte ich nur mal geschrieben haben, weil es mir hier schon öfter aufgefallen ist...
 
A

Anzeige




Vielleicht hilft dir das hier weiter: (klicke hier)
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben