Mit Zahl statt ASCII- Code rechnen

wi11

Neues Mitglied
Java:
int getQuersumme(long x) {
  String s=""+x;
  int summe=0;
  for (int i=0; i<s.length(); i++) {
    summe=summe+s.charAt(i);
  }
  return(summe);

Guten Tag,

ich verstehe nicht wie ich mit der tatsächlichen Zahl statt dem ASCII-Code rechnen kann.
Wenn die Eingabe zum Beispiel 12 ist, kommt bei der Quersumme, also dem Ergebnis, die Zahl 99 raus,
da ja die 1 der 049 und die 2 der 050 im ASCII-Code entspricht.
Kann mit jemand sagen, wie ich das fixen kann?


Vielen Dank
 
Zuletzt bearbeitet von einem Moderator:
Beste Antwort
Du hast zwei Möglichkeiten:

Zum einen - wenn du unbedingt mit Strings arbeiten willst - kannst du beim Bilden der Summe jedesmal 48 abziehen, also summe=summe+s.charAt(i)-48;.

Zum anderen könntest du auf die Umwandlung in Strings verzichten und stattdessen % und / benutzen:
Code:
123 % 10 = 3
123 / 10 = 12

fhoffmann

Top Contributor
Du hast zwei Möglichkeiten:

Zum einen - wenn du unbedingt mit Strings arbeiten willst - kannst du beim Bilden der Summe jedesmal 48 abziehen, also summe=summe+s.charAt(i)-48;.

Zum anderen könntest du auf die Umwandlung in Strings verzichten und stattdessen % und / benutzen:
Code:
123 % 10 = 3
123 / 10 = 12
 
Beste Antwort

wi11

Neues Mitglied
danke!
Du hast zwei Möglichkeiten:

Zum einen - wenn du unbedingt mit Strings arbeiten willst - kannst du beim Bilden der Summe jedesmal 48 abziehen, also summe=summe+s.charAt(i)-48;.

Zum anderen könntest du auf die Umwandlung in Strings verzichten und stattdessen % und / benutzen:
Code:
123 % 10 = 3
123 / 10 = 12
danke!
 
K

kneitzel

Gast
kannst du beim Bilden der Summe jedesmal 48 abziehen,
Da von mir noch noch ein kleiner Tipp um besser lesbaren Code zu bekommen:
Ich finde die 48 etwas "kryptisch" - das dies der ASCII Code vom Zeichen 0 ist, hat man ja nicht wirklich auf dem Schirm. So ein char ist aber auch nur eine 16 Bit Zahl und beim Rechnen mit Integern wird der automatisch zu einem int gecastet. Daher kann man auch einfach statt der 48 das Literal für das Zeichen 0 schreiben: '0':
summe=summe+s.charAt(i)-'0';

Dies finde eine Schreibweise, dich ich für verständlicher halte.
 

Neue Themen


Oben