Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Quersumme berechnen in Java

Empfohlene Antworten

Veröffentlicht

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

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

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.

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

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

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;

  }

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

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

}

Stand da oben nicht was von OHNE schleifenkonstrukt?!? ^^

ich hab es auf jeden fall als ohne interpretiert :P

Ich hab's auch eher als "in einer" interpretiert ;)

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

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

      }

    }

  }

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.