freshes Geschrieben 8. November 2010 Geschrieben 8. November 2010 (bearbeitet) Hallo, ich bin noch ein Anfänger und versuche gerade erst durch den Stoff durchzusteigen, bitte keine Haue Folgendes Problem: ich soll eine Quersumme von der Zahl 1543 (als Beispiel, beliebige vierstellige Zahl) bestimmen, und zwar gibt es einige Vorgaben: - die Quersumme einer natürlichen Zahl soll berechnet werden - wenn der Anwender eine negative ganze Zahl eingibt, wir diese mit (-1) multipliziert - für den ganzzahligen Rest soll der Modulooperator (%) eingesetzt werden, für die Berechnung ganzzahliger Quotienen der Divisionsoperator (/) - die Summanden der Quersumme werden in einer Schleife berechnet. Nach Ende der Schleife wird die Quersumme ausgegeben soviel dazu. so sieht im Moment mein Programm aus: class A1B3 {public static void main(String args[]) {int q=1543; int su=1; int m=10; System.out.println("Quersumme"); while (q>=1) { su=q%m; { System.out.println(q+"%"+m+"="+su); q=q/m; } System.out.println("Ende der Berechnung"); } } } ich hab die Summanden ausgegeben. Problem ist jetzt aber, wie ich die Summanden am Ende der Schleife addiere, um auf die Quersumme zu kommen. Wie mache ich das denn? Und das mit der Multiplikation von (-1) hab ich auch nocht nicht ganz begriffen...hoffe ihr könnt mir helfen. Bearbeitet 8. November 2010 von flashpixx Code-Tags eingefügt Zitieren
kylt Geschrieben 8. November 2010 Geschrieben 8. November 2010 Vorab es gibt hier im Forum auch Möglichkeiten Code einzurücken, nutze diese bitte auch. class A1B3 { public static void main( String args[] ) { [INDENT]int q = 1543; int su = 1; int m = 10; System.out.println("Quersumme"); [INDENT]while (q >= 1) { su = q%m; System.out.println(q + "%" + m + "=" + su); q = q/m; System.out.println("Ende der Berechnung"); }[/INDENT] } [/INDENT]} So wäre der Code deutlich lesbarer. Setze die öffnende Klammer am besten noch in der dazu gehörenden Klammer und lass bei Ausgaben und Zuweisungen ein paar Leerzeichen dazwischen. ich habe das an deinem Code Beispielhaft mal gemacht. Der eine Blog (die Klammern) waren unnötige, ich habe dies mal entfernt . Ich finde gut, das die Variabeln klein geschrieben hast, das war Java-Konform. Zur Lösung deiner Fragen. Für negative Werte musst du vor dem Rechnen eine Abfrage einbauen, die Prüft ob dein wert Negativ ist. Für die Quersumme könntest du deine ganze Zahl nehemen und diese in einen String convertieren. Dafür gibt es feste Methoden siehe auch Konvertierung von Strings in Integer und umgekehrt Als String kannst du dann die Zahl an jeder Ziffer mit der "split()" Funktion trennen. Du erhälst ein Array an Strings. Dann durchläufst du das array mit einer Schleife und onvertierst jede Ziffer zurück in einen int und addierst diese - fertig Zitieren
Gooose Geschrieben 8. November 2010 Geschrieben 8. November 2010 Hier mal ein Beispiel für einen konstanten String. int quersumme = 0; for(char number : "123456".toCharArray()) { quersumme += Character.getNumericValue(number); } Über weitere Möglichkeiten der einzelnen Klassen kannst du in der Java API weitere Informationen finden. Zitieren
Dragon8 Geschrieben 9. November 2010 Geschrieben 9. November 2010 So schön einfach wie die Lösung von euch beiden ja sein mag, wird sie freshes rein garnichts bringen, da, wie in seinem Post beschrieben, er recht genaue Vorgaben hat, mit welchen Mitteln er die Quersumme berechnen soll. Zu dem Problem, das Programm ist doch schon so gut wie fertig. Die Berechnung der einzelnen Summanden findet schon statt, jetzt musst du (freshes) nur noch die Summe der einzelnen Werte, die deine Variabe su während des Schleifendurchlaufes annimmt, berechnen. Nach der Schleife die Summe noch ausgeben lassen, und deine Aufgabe ist so gut wie erfüllt. Die Multiplikation mit -1 bei eventuellen negativen Eingaben ist dazu gedacht, aus den negativen Zahlen eine positive Zahl zu machen. Du solltest also noch vor deiner ganzen Berechnung prüfen, ob die Zahl, aus der du die Quersumme berechnen sollst, negativ ist und wenn ja, diese mit -1 multiplizieren. Zitieren
etreu Geschrieben 9. November 2010 Geschrieben 9. November 2010 Du must nur noch die Summanden addieren. class A1B3 { public static void main( String args[] ) { [INDENT]int q = 1543; int su = 0; [b]int quersumme = 0;[/b] int m = 10; System.out.println("Quersumme"); [INDENT]while (q >= 1) { su = q%m; [b]quersumme += su;[/b] System.out.println(q + "%" + m + "=" + su); q = q/m; System.out.println("Ende der Berechnung"); }[/INDENT] } [/INDENT]} Zitieren
freshes Geschrieben 9. November 2010 Autor Geschrieben 9. November 2010 danke für die hilfe! ich nehme an für die Multiplikation von (-1) brauche ich eine if-Anweisung, aber wo soll die hin? Zitieren
Dragon8 Geschrieben 9. November 2010 Geschrieben 9. November 2010 danke für die hilfe! ich nehme an für die Multiplikation von (-1) brauche ich eine if-Anweisung, aber wo soll die hin? Richtig. Da du die Multiplikation benutzen willst, damit du nur aus natürlichen Zahlen die Quersumme errechnest, sollte die Überprüfung und eventuelle Multiplikation auch vor deine gesamte Berechnung kommen. Zitieren
freshes Geschrieben 9. November 2010 Autor Geschrieben 9. November 2010 so in etwa? if(q < 0) q * (-1); irgendwie bekomme ich mit der Anweisung immer noch ein Error unter dem Mal-Zeichen Zitieren
etreu Geschrieben 9. November 2010 Geschrieben 9. November 2010 so in etwa? if(q < 0) q * (-1); irgendwie bekomme ich mit der Anweisung immer noch ein Error unter dem Mal-Zeichen Weil du den Zuweisungsoperator vergessen hast. Damit ist das keine gültige Anweisung. Zitieren
freshes Geschrieben 10. November 2010 Autor Geschrieben 10. November 2010 danke hat sich erledigt! Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.