Zum Inhalt springen

Quersumme berechnen in Java


Empfohlene Beiträge

Geschrieben

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

Geschrieben

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

Geschrieben

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.

Geschrieben

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

Geschrieben

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;

  }

Geschrieben
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

Geschrieben
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

}

Geschrieben

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

Geschrieben
Wobei das natürlich nur ab Java 5 funktioniert
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*.

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));

      }

    }

  }

Geschrieben
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 ;)

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...