Für was brauchst du den 1. BufferedReader stdin?
So wie ich die Aufgabe verstanden habe sollst du so viele Zahlen einlesen können, bis der Benutzer irgendwann eine 0 eingibt. Dann musst du nicht auch noch Fragen wie viele Zahlen der Benutzer eingeben soll. Du kannst ja einfach überprüfen ob die Zahl eine 0 ist und dann das Ergebnis ausgeben.
Natürlich brauchst du dafür eine Schleife. Welche ist relativ egal, aber da du nicht genau weißt wann die 0 kommt, würde ich while() nehmen.
Code:
int erg = 0;
while(zahl != 0)
{
zahl = Integer.parseInt(Eingabe.readLine()); // hier müsstest du noch eine Exception abfangen, falls Text eingegeben wird und nicht in Int gewandelt werden kann
erg = erg + zahl;
} In deinem Fall hast du Glück, dass die Abbruch-Bedingung gerade die Zahl 0 ist. Da machts nämlich nichts wenn du die letzte Eingabe (also eine 0) nochmal aufs Ergebnis addierst. Wäre die Abbruch-Bedingung jetzt -1 müsstest du vor dem Addieren (erg = erg + zahl) nochmal prüfen ob jetzt die -1 eingegeben wurde oder nicht... Oder du zählst am Ende immer nochmal eins ab, was aber nicht sehr elegant wäre.
Edit: Hier nochmal mit Exception-Handling:
Code:
int erg = 0;
while(zahl != 0)
{
try
{
zahl = Integer.parseInt(Eingabe.readLine());
erg = erg + zahl;
}
catch (NumberFormatException ex)
{
System.out.println("Eingabe war keine Zahl!");
}
}