Der Code ist so lang, weil viel Redundanz vorkommt. Wenn Du einen Codeblock gleich oder ähnlich mehr als einmal schreiben musst, ist eine Auslagerung meist sinvoll.
Zu Deinem Fehler: Ich sehe keine Eingabeprüfung. Der Code erwartet eine Ganzzahl, lässt aber jede Eingabe zu.