Querprodukt ermitteln

Velko

Mitglied
Guten Tag Freunde,

ich muss für eine Aufgabe, das Querprodukt bis zur einer einstelligen Zahl ermitteln. Jedoch stehe ich gerade aufm Schlauch und weiß nicht so recht, wie ich die Schleife so lange laufen lassen soll bis x=0 erreicht.
Meine Schleife ermittelt bis dato nur ein Querprodukt, also 555 ---> 125! Es soll jedoch auch das Querprodukt von 125 ermitteln und dann von 10. Bis die Zahl halt einstellig wird.

Irgendwelche Vorschläge?


Java:
package ziffernberechnen;

public class ziffernberechnen {
   public static void main(String[] args) {
    int x = 555 ;
    int p=1;   
    while(p != 0){
      p*=x%10;
      x/=10;
      System.out.println(p);
      }
    System.out.println(p);
       }
   }

MfG.
 
Zuletzt bearbeitet von einem Moderator:
Setz noch ein Schleife drumherum, und als Abbruchbedingung nimmst du, dass die Zahl einstellig ist (z.B. einfach prüfen ob bei Integer-Division durch 10 das Ergebnis 0 ist)
 
Edit: Zum Code oben die Abbruchbedingung ist (x !=0)

Erstmal vielen Dank für die Antwort, ich habe den Vorschlag mit eingebaut jedoch habe ich nun ein anderes Problem, egal welche Zahl ich eingebe, es kommt immer 0 raus.
Weißt du woran das liegen könnte?
Java:
package ziffernberechnen;

public class ziffernberechnen {
    public static void main(String[] args) {
     int x = 23 ;
     int p=1;   
     while (x / 10 != 0)
     {
     while(x != 0){     
         p*=x%10;
           x/=10;
                     }
     }
     System.out.println(p);
        }
    }

Edit: Das Problem ist, die Variable P bekommt den Wert der Quersumme übermittelt, ich kann die erste Schleife theoretisch überprüfen lassen, ob p / 10 = 0 ist aber dann wird die Abbruchbedingung jedes mal aufs neue Abgebrochen, ich überlege gerade, ob eine do-while schleife besser wäre`?
 
Zuletzt bearbeitet von einem Moderator:
Du bist fast fertig, nur nach dem Durchlauf der inneren Schleife solltest du die Werte für x und p neu setzen. Für den nächsten Schleifendurchlauf der äußeren Schleife bekommt x den Wert von p zugewiesen und p wird wieder auf 1 gesetzt.
 
Die Werte setzt er doch (z.B. x/=10 ). Der code ist vollkommen in Ordnung (getestet), Kopieren/Einfügen hat wunderbar geklappt.
Es wurde anfangs nur eben x anstatt p ausgegeben, aber das hat er ja schon behoben.
Eine Schleife kann weggelassen werden
Java:
    private static int querProdukt(int x) {
        int p = 0;
        if (x != 0) {
            p = 1;
            while(x != 0){
                p *= x % 10;
                x /= 10;
            }
        }
        return p;
    }
 
    public static void main(String...args) {
        int[] testValues = new int[]{0,123, 25, 17, 34,120};
        for (int x : testValues) {
            System.out.println("Produkt von " + x + " ist " + querProdukt(x));
        }
    }
Produkt von 0 ist 0
Produkt von 123 ist 6
Produkt von 25 ist 10
Produkt von 17 ist 7
Produkt von 34 ist 12
Produkt von 120 ist 0
 
Ach, hab das mit der einstelligen Zahl übersehen.

Na dann ... Vor der Rückgabe von p noch Prüfen, ob p einstellig ist. Ansonsten die Funktion nochmal mit p aufrufen und den Wert p zuweisen.
Das geht natürlich auch mit einer Schleife. Dass 0 rauskommen soll, wenn eine "0" in der Zahl vorkommt, ist natürlich auch nur meine Interpretation.

Damit kommt dann das raus
Produkt von 0 ist 0
Produkt von 123 ist 6
Produkt von 25 ist 0
Produkt von 17 ist 7
Produkt von 34 ist 2
Produkt von 120 ist 0
 

Zurück
Oben