Java Werte eines char array addieren?
Hier kommt als Ergebnis 206 heraus?
5 + 4 + 3 +2 +1 = 15? und nicht 206?
Wie kriege ich es hin, dass die einzelnen Zahlen aus dem char-array addiert werden?
5 + 4 +3 + 2 = 14
Die Zahlen in dem char stehen für einzelne Zeichen
65 = A usw.
5 Antworten
![](https://images.gutefrage.net/media/user/JanMarcel01/1545064833528_nmmslarge__96_96_1728_1728_1530d37dedc00fac79f60049c3b6a4db.jpg?v=1545064834000)
Hey,
in deiner Ergänzung erklärst du es ja schon selbst. Das zeichen '5' (und auch die anderen) wird durch eine Zahl repräsentiert (in diesem Fall 53). Du hast also '5' (53) + '4' (52) + '3' (51) + '2' (50) = 206.
Mfg Jannick (L1nd)
![](https://images.gutefrage.net/media/user/daCypher/1444744777_nmmslarge.jpg?v=1444744777000)
Die anderen haben ja schon gesagt, was das eigentliche Problem ist. Um den Zahlenwert eines Zeichens zu kriegen, kannst du übrigens auch Character.getNumericValue() benutzen:
ergebnis += Character.getNumericValue(array[i]);
Dadurch werden auch alle anderen Unicode Zahlenwerte (Zahlen im Kreis, chinesische/japanische Zahlen etc.) in ihren Zahlwert übersetzt.
![](https://images.gutefrage.net/media/user/xxxcyberxxx/1691185806883_nmmslarge__0_0_1230_1230_4dfa4fbf5df5051b1dd22ccc1781adca.png?v=1691185807000)
Wie kriege ich es hin, dass die einzelnen Zahlen aus dem char-array addiert werden?
Schaffst du doch ;)
Hier kommt als Ergebnis 206 heraus?
Ja, weil du mit dem falschen Typen arbeitest. Du rechnest nicht mit den Werten der Zeichen, sondern mit Chars - den dahinterliegenden Zahlenwerten. Wenn du dir die ASCII-Tabelle anschaust, wirst du merken, dass die Zeichen 0 bis 9 die ASCII-Werte 48 bis 57 haben.
Du rechnest hier nicht 5+4+3+2 = 14, sondern 53+52+51+50 = 206
![](https://images.gutefrage.net/media/default/user/15_nmmslarge.png?v=1551279448000)
Das ist schon klar und absolut korrekt was dabei herauskommt.
Es werden nicht die "Werte" der Ziffern addiert - was Du interpretierst - sondern die Ordinal-Werte der einzelnen Zeichen.
![](https://images.gutefrage.net/media/default/user/7_nmmslarge.png?v=1438863662000)
Deine "Zahlen" sind Zeichen.
Du addierst hier die ASCII-Codes der Zeichen '2' bis '5':
50 + 51 + 52 + 53
Edit:
Um vom ASCII-Code auf die Zahl zu kommen, musst du 48 bei jedem Zeichen abziehen.
![](https://images.gutefrage.net/media/default/user/7_nmmslarge.png?v=1438863662000)
Weil der ASCII-Code einer Ziffer eben um 48 dezimal (30 hexadezimal) größer ist, als der Ziffernwert.
Könnte man selbst nachschauen - ASCII-Tabellen sind online nicht schwer zu finden
![](https://images.gutefrage.net/media/default/user/15_nmmslarge.png?v=1551279448000)
Wieso muss man 48 bei jeder Zahl abziehen?