Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich brauche eine Schleife die eine beliebige Zahl so lange durch 10 teilt bis zur Null
Ich möchte dann die Schleifdurchgänge zählen, damit ich auf die Potenz dieser beliebigen Zahl komme. Kann mir jemand da zeigen, wie man das coden würde? Mir ist es nicht erlaubt irgendwelche Funktionen oder so zu benutzen außer mein Wissen über Schleifen und eben eigene Funktionen zu entwerfen. Könnte man auf die Potenz einer beliebigen Zahl auch durch den modulo-operator irgendwie kommen?
public class Main {
public static void main(String[] args) {
getPotenz(123456);
System.out.println(getPotenz (1234));
}
public static int getPotenz(int zahl){
int counter = 0;
while (zahl > 0){
zahl = zahl / 10;
counter++;
}
return counter;
}
Ich habe hier eine while Schleife genommen, da diese so lange in Schleife läuft wie die Bedingung erfüllt ist.
In einem Schleifendurchgang wird dann die übergebene Zahl durch 10 geteilt.
Und die Variable counter eins hochgezählt. Denn durch 10 teilen können heißt, dass man eine Potenz mehr hat.
Die Main Methode ruft die getPotenz Methode mit einem Wert von z.B. 1234 auf.
Wenn die Methode aufgerufen wurde und fertig ist gibt sie die den int counter zurück.
Korrigiere mich falls ich daneben liege aber hier zählst du die Anzahl an Ziffern des integers (=zahl): Immer wenn du eine Zehner-Stelle "wegdividierst" kriegt der Counter +1.
Willst du die Potenz oder den Exponenten herausfinden ist die Potenz = Zahl * Exponent. Deiner Methode übergibst du die Potenz denke ich. So oder so fehlt doch noch ein Wert.
Java:
public static int getPotenz(int zahl, int exponent){ //zahl wäre 1234, exponent fehlt
int counter = 1;
for (int i = 0; i < exponent, i++)
{
counter = counter*zahl;
}
return counter;
}
Also ich sehe da einfach nur eine typische Anfängeraufgabe. Die Formulierung mit der Potenz ist etwas irritierend, aber da wird etwas gemeint sein wie die höchste Potenz der 10er Potenzen (Wenn man die Zahl darstellt als Summer von Multiplikationen mit 10er Potenzen also a*10^0 + b*10^1 + c*10^2 + ....
Und die zusätzliche Frage wird komplett ignoriert:
Und ja, auch das ginge. Man könnte in einer Schleife hochzählen und immer schauen, ob
Zahl % 10^x == Zahl
ist. Die höchste Zehnerpotenz ist dann 10^(x-1).
Das bringt aber ein Problem mit sich, denn man bekommt bei sehr großen Zahlen einen Überlauf bei der Berechnung von 10^x. Integer.MAX_INT (und viele andere Zahlen mit entsprechender Stellenanzahl) als Parameter wird damit also nicht bearbeitet werden können.