unimx Geschrieben 18. Oktober 2005 Teilen Geschrieben 18. Oktober 2005 Hallo Kann mir jemand helfen uns zwar soll ich die Quersumme einer Zahl berechnen. allerdings ihne Schleifenanweisung. Weis jemand wie das geht? Ich habem mit Java fast keine Erfahrung bin also mit meinem Latein am ende gruß Unimx Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etherius Geschrieben 18. Oktober 2005 Teilen Geschrieben 18. Oktober 2005 Also mal ganz faul aus google das erste ergebnis: public class Quersumme { public static void main(String[] args) { int zahl = 155; System.out.println("Quersumme = " + quersumme(zahl)); } public static int quersumme(int zahl) { if (zahl <= 9) return zahl; return zahl%10 + quersumme(zahl/10); } } rechnet dir die quersumme der zahl aus quersumme von 155 in diesem fall = 11 mfg Eth Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schiller256 Geschrieben 18. Oktober 2005 Teilen Geschrieben 18. Oktober 2005 Ich weis nicht ob es eine Methode gibt die dir aus einer Zahl die Quersumme bildet. Ich würde die Zahl in ihre einzelteile Zerlegen und dann einfach aufaddieren. Also die Zahl 123 in 1 2 3 zerlegen mit split dann in einen int Wert umwandeln und berechnen also 1+2+3 = 6. Vielleicht kannst du ja auch mal deinen Ansatz posten damit wir uns dem mal anschauen können. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
unimx Geschrieben 18. Oktober 2005 Autor Teilen Geschrieben 18. Oktober 2005 Danke wir haben es viel einfach bzw halt nur auf eine Zahl bezogen gemacht -------------------------- public class Quersumme { public static void main(String argv[]) { int z = 123; int h,ze,e,qs ; h = z/100; //1 z = z%100; //23 ze = z/10; //2 e = z%10; //3 qs = h + ze + e; System.out.println(qs); } } ------------------ Die Lösung sieht aber gut aus. Danke gruß Unimx Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kingofbrain Geschrieben 18. Oktober 2005 Teilen Geschrieben 18. Oktober 2005 Das ist das Problem. Euer Lösung funktioniert nur für dreistellige Zahlen. Das ist aber nicht so geschickt. Ich finde Lösung eins aus google recht schick! Peter Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
perdian Geschrieben 18. Oktober 2005 Teilen Geschrieben 18. Oktober 2005 Eine weitere mögliche Lösung: public static int quersumme(int value) { int result = 0; for(char valueDigit : String.valueOf(value).toCharArray()) { result += Character.digit(valueDigit, 10); } return result; } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_Newlukai Geschrieben 18. Oktober 2005 Teilen Geschrieben 18. Oktober 2005 Eine weitere mögliche Lösung: public static int quersumme(int value) { int result = 0; for(char valueDigit : String.valueOf(value).toCharArray()) { result += Character.digit(valueDigit, 10); } return result; } Wobei das natürlich nur ab Java 5 funktioniert und nicht gerade geeignet für Algorithmentheorie ist. Das erste Beispiel ist schon OK, aber nicht in einer Schleife. Um meiner Faulheit gerecht zu werden und didaktisch geschickt vorzugehen, hier nur ein Ansatz: Prüfe ob die Zahl mehr als 1 Stelle hat Mittels modulo eine Zahl "abspalten" und zur Gesamtsumme hinzufügen Wiederhole bis nur noch 1 Stelle übrig Tip: Modulo Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
speedi Geschrieben 18. Oktober 2005 Teilen Geschrieben 18. Oktober 2005 public static int getQuersumme(int i){ //ich liebe diesen Deutsch-Englisch-Mix String zahl = ""+i; int erg = 0; for(int a = 0; a < i.length(); a++){ erg = erg + Integer.parseInt(""+charAt(a)); } return erg } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etherius Geschrieben 18. Oktober 2005 Teilen Geschrieben 18. Oktober 2005 Stand da oben nicht was von OHNE schleifenkonstrukt?!? ^^ Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
speedi Geschrieben 18. Oktober 2005 Teilen Geschrieben 18. Oktober 2005 also das ihne kann man nun eber echt auch als "in ner" oder "inne" werten. Aber gut wenn es "ohne" heißen soll! Sry! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etherius Geschrieben 18. Oktober 2005 Teilen Geschrieben 18. Oktober 2005 ich hab es auf jeden fall als ohne interpretiert Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_Newlukai Geschrieben 18. Oktober 2005 Teilen Geschrieben 18. Oktober 2005 Ich hab's auch eher als "in einer" interpretiert Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
unimx Geschrieben 19. Oktober 2005 Autor Teilen Geschrieben 19. Oktober 2005 ja mir ist bewusst das es eine seeeehr schlechte Lösung ist aber genau so wollt es unser Lehrer haben. Sagen wirs mal so ich glaub ich darf mir Java selber beibringen ich hab das gefühl der hat keine ahnung wie er sowas rüberbringen soll. cya Unimx Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
perdian Geschrieben 19. Oktober 2005 Teilen Geschrieben 19. Oktober 2005 Wobei das natürlich nur ab Java 5 funktioniert1.5/5.0 ist jetzt seit fast einem Jahr auf dem Markt, und ich setze es daher als vorhanden voraus. Es programmiert auch niemand mehr für die Windows 3.1 API *g*. und nicht gerade geeignet für Algorithmentheorie ist.Eine performante Lösung gehörte nicht zur Aufgabenstellung *g*. Stand da oben nicht was von OHNE schleifenkonstrukt?Das ist das Problem, wenn der OP sich nicht die Zeit für eine korrekte Rechtschreibung nimmt. Dann sind Eigeninterpretationen Tür und Tor geöffnet. Ich habe es als "inne" also als "in einer" Schleife gelesen. Aber rekursiv geht's natürlich auch. Wiederrum basiert auf Character Operationen, aber damit kommt, wie ich finde, der Ablauf recht schön zum Ausdruck: public static int quersumme(int value) { if(value == 0) { return 0; } else { String valueString = String.valueOf(value); int firstDigitValue = Character.digit(valueString.charAt(0), 10); String restString = valueString.length() > 1 ? valueString.substring(1) : null; if(restString == null) { return firstDigitValue; } else { return firstDigitValue + quersumme(Integer.parseInt(restString)); } } } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_Newlukai Geschrieben 19. Oktober 2005 Teilen Geschrieben 19. Oktober 2005 1.5/5.0 ist jetzt seit fast einem Jahr auf dem Markt, und ich setze es daher als vorhanden voraus. Es programmiert auch niemand mehr für die Windows 3.1 API *g*. Das hab' ich mir schon gedacht. Ich wollte nur allgemein darauf hinweisen. Nicht das wieder kommt: 'Läuft bei mir nicht'. Eine performante Lösung gehörte nicht zur Aufgabenstellung *g*. *g* So meinte ich das ja auch nicht. Ich meinte eher so die Richtung 'pädagogisch wertvoll'. Jeder der ernsthaft programmieren will, sollte die grundlegenden Algorithmen mal gesehen haben Das ist das Problem, wenn der OP sich nicht die Zeit für eine korrekte Rechtschreibung nimmt. Dann sind Eigeninterpretationen Tür und Tor geöffnet. Ich habe es als "inne" also als "in einer" Schleife gelesen. *allgemeine Verwirrung* Das Zitat stammt nicht von mir. Du weißt schon, daß Dein erster Code rekursiv war? Du dachtest OHNE und ich verstand IN EINER Schleife. Aber iss ja auch egal jetzt Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
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.