Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Schreiben Sie ein Programm Isbn10.java, das mit der Methode getLine eines Scanner-Objekts
- einen ISBN-10-Code (Internationale Standardbuchnummer) als String einliest und seine Gültigkeit
- überprüft.
- Nutzen Sie dieses Rahmenprogramm:
- import java.util.Scanner;
- class Isbn10 {
- public static final int OK = 0;
- public static final int FALSCHES_ZEICHEN = 1;
- public static final int FALSCHE_PRUEFSUMME = 2;
- public static final int FALSCHE_LAENGE = 3;
- static int validityIsbn10(String isbn) {
- // TODO: Ihr Code hier...
- return OK;
- }
- public static void main(String[] args) {
- System.out.print("ISBN eingeben: ");
- Scanner scanner = new Scanner(System.in);
- String isbn = scanner.nextLine();
- scanner.close();
- switch (validityIsbn10(isbn)) {
- // TODO: Ihr Code hier...
- }
- }
- }
- validIsbn10 gibt als Wert die eine der Konstanten OK, KEINE_ZIFFER, FALSCHE_PRUEFSUMME und
- FALSCHE_LAENGE zurück. Die Benennung der Konstanten gibt an, in welchem Fall sie jeweils zum
- Einsatz kommen sollen.
- Bauen Sie anhand der folgenden Teilaufgaben das Programm schrittweise auf. Dazu starten wir
- zunächst mit einem kürzeren, einfacheren Code.
- a) Unser verkürzter Code bestehe zunächst aus nur 5 Ziern a1a2a3a4a5. Die erste Ausbaustufe
- überprüft, ob es sich um Ziern handelt.
- Beispieldialog (rot = Benutzereingabe):
- ISBN eingeben: 47114
- OK
- Eingabe eines anderen Zeichens als einer Zier soll zu einer Programmbeendigung mit Fehlermeldung
- führen:
- ISBN eingeben: 47%14
- Fehler: Keine Ziffer
- b) In der nächsten Ausbaustufe soll die letzte Zier a5 als Prüfzier dienen. Dazu werden die vier
- Ziern a1; a2; a3; a4 mit ihrer Stelligkeit multipliziert und addiert:
- sum = 1 a1 + 2 a2 + 3 a3 + 4 a4
- Der Code sei gültig, wenn sum % 7 == a5 % 7.
- Wichtiger Tipp: DenWert einer Zier vom Typ char erhalten Sie, indem Sie '0' subtrahieren:
- char ziffer = '7';
- int zahl = (int) (ziffer - '0'); // zahl ist 7
- Beispieldialoge (rot = Benutzereingabe):
- ISBN eingeben: 47114
- OK
- denn
- (1 4 + 2 7 + 3 1 + 4 1) % 7 = 25 % 7 == 4
- ISBN eingeben: 29086
- Fehler: Falsche Pruefsumme
- denn
- (1 2 + 2 9 + 3 0 + 4 8) % 7 = 52 % 7 != 6
- c) Modifizieren Sie das Programm nun so, dass statt unseres vereinfachten der tatsächliche ISBN-
- 10-Code verwendet wird:
- Es wird eine Zeichenkette mit 10 Ziern a1; a2; : : : ; a10 eingelesen.
- Die Prüfzier ist nun a10. Diese kann im Unterschied zu den Ziern davor auch ein großes
- X sein. X entspricht dem Zahlenwert 10.
- Es dürfen nicht mehr oder weniger als 9 Ziern plus eine Prüfzier sein.
- Die Ziern a1; : : : ; a9 werden wieder mit ihrer Stelligkeit multipliziert und addiert:
- sum = 1 a1 + : : : + 9 a9
- Der Code sei gültig, wenn sum % 11 == a10 % 11.
- Beispieldialoge (rot = Benutzereingabe):
- ISBN eingeben: 344615497
- Fehler: Falsche Laenge
- ISBN eingeben: 34-46154-973
- OK
- denn
- (1 3 + 2 4 + 3 4 + 4 6 + 5 1 + 6 5 + 7 4 + 8 9 + 9 7) % 11 = 245 % 11 == 3
- Weitere gültige ISBN-Nummern zum Testen: 0130351180, 3446404341, 609922713X. Testen Sie
- auch die Erkennung von Fehlern bei ungültigen Formaten!
- d) Die ISBN-Nummern enthalten häufig Trennstriche ('-'). Diese sollen ignoriert werden1. Also
- soll auch 6-099-22713-X eine gültige ISBN-Nummer sein.
- 1Zur Vereinfachung gehen wir davon aus, dass das letzte Zeichen kein Trennstrich sein darf.
- Das Programm in seiner vollständigen Fassung ist abzugeben. Die Überprüfung auf Gültigkeit
- der ISBN-10 muss in eine Funktion
- static void isValidIsbn10(String isbn)
- ausgelagert sein.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement