# Wieso verhält sich das Programm falsch?



## daneufeld97 (17. Nov 2017)

Hallo, ich bin blutiger Anfänger in Java. Nun haben wir folgende Aufgabenstellung bekommen:

Schreiben Sie ein Java-Programm SumOfNumbers.java. Erweitern Sie hierzu das Programm aus Aufgabe 3.4b dahingehend, das die eingelesene Zeichenkette die Form <Zahl>,<Zahl>,<Zahl>,... haben kann. Das Programm soll nun die durch Kommata getrennten Zahlen jeweils zu einem int umwandeln, aufaddieren und anschließend die Summe ausgeben.
Ich habe mir überlegt, dass man eine Zahlenfolge (die durch Kommata getrennt wird) als ganz lange Zahl behandelt. Dafür sollen sich die Teilzahlen aber immer "gemerkt" werden und sobald ein Komma kommt soll die Zahl aufsummiert werden und wieder = 0 gesetzt werden, sodass sich jede Zahl aus meiner Zahlenfolge neu gemerkt wird. Mein Problem ist, dass die Ausgabe nicht so funktioniert, wie sie sollte. Gebe ich 2 Zahlen ein, wird die erste ausgegeben. Gebe ich drei Zahlen ein, wird die Letzte ausgegeben. Ab 4 Zahlen werden alle außer die Letzte aufsummiert und ausgegeben. Kann mir jemand sagen, wieso?

Mein Code:


```
import AlgoTools.IO;


public class SumofNumbers {

 
   public static void main(String[] args) {

  int ziffer;
  int Ergebnis = 0;
  String wort;
  int Endresultat = 0;
  int zahl= 0;

     wort = IO.readString ("Bitte eine durch Kommata getrennte Zahlenfolge eingeben!");

     for (int i = 0; i < wort.length (); i++) {

      ziffer = (int) wort.charAt (i) - 48;
      if (ziffer != -4){
       zahl = zahl * 10 + ziffer;
     }

        else {
        Endresultat = Endresultat + zahl;
        zahl = 0;
     }
   }

IO. println (Endresultat);

   }
 }
```


----------



## VfL_Freak (17. Nov 2017)

Moin,
nutze bitte die Code-Tags !!


```
if (ziffer != -4)   // Wieso '-4' ???
{
    zahl = zahl * 10 + ziffer;
}
else 
{
    Endresultat = Endresultat + zahl;
    zahl = 0;
}
```

VG Klaus


----------



## daneufeld97 (17. Nov 2017)

Was sind denn die Code-Tags? 
-4 weil ein Komma in der HascII-Tabelle eine 44 ist und ich ja davon 48 abziehe.


----------



## VfL_Freak (17. Nov 2017)

Moin,


daneufeld97 hat gesagt.:


> Was sind denn die Code-Tags?


siehe meine Signatur!!



daneufeld97 hat gesagt.:


> -4 weil ein Komma in der HascII-Tabelle eine 44 ist und ich ja davon 48 abziehe.


Oha, von hinten durch die Brust ins Auge 
Glaubst Du, dass Du das in einem Jahr noch weißt?

Aber prüfe doch VOR dem Abziehen, ob "wort.charAt(i) == ';'" ist! 
Falls JA, dann überspringst Du das Zeichen und gehst gelich zum nächsten Schleifendurchlauf!

VG Klaus


----------



## krgewb (17. Nov 2017)

Die folgende Zeile muss *nach *dem Else-Block kommen und nicht darin:

```
Endresultat = Endresultat + zahl;
```


----------



## Meniskusschaden (17. Nov 2017)

krgewb hat gesagt.:


> Die folgende Zeile muss *nach *dem Else-Block kommen und nicht darin:


Das würde bei einstelligen Zahlen funktionieren. Ich glaube aber, dass mehrstellige Zahlen erlaubt sind, weil die Zeile `zahl = zahl * 10 + ziffer;` sonst keinen Sinn ergibt.


daneufeld97 hat gesagt.:


> Gebe ich 2 Zahlen ein, wird die erste ausgegeben. Gebe ich drei Zahlen ein, wird die Letzte ausgegeben. Ab 4 Zahlen werden alle außer die Letzte aufsummiert und ausgegeben. Kann mir jemand sagen, wieso?


Meines Erachtens wird nicht nur ab der vierten Zahl sondern immer,  alles außer der letzten Zahl aufsummiert. Das liegt daran, dass du beim Auftreten eines Kommas addierst. Nach der letzten Zahl kommt aber kein Komma mehr.


----------



## truesoul (17. Nov 2017)

Hallo ist split(";") nicht erlaubt?

Speicher doch jedes Zeichen, dass kein Komma ist, in eine Zeichenkette und sobald ein Komma kommt wandelst die Zeichenkette in einem Integer und summierst den Wert. Danach "leerst" du die Zeichenkette.

Grüße


----------



## krgewb (19. Nov 2017)

VfL_Freak hat gesagt.:


> Aber prüfe doch VOR dem Abziehen, ob "wort.charAt(i) == ';'" ist!





truesoul hat gesagt.:


> Hallo ist split(";") nicht erlaubt?


Verwechselt ihr gerade Komma und Semikolon?


----------



## truesoul (20. Nov 2017)

krgewb hat gesagt.:


> Verwechselt ihr gerade Komma und Semikolon?



Ja  
Ist aber denke ich nicht weiter schlimm


----------

