daily pastebin goal
20%
SHARE
TWEET

Untitled

a guest Nov 23rd, 2017 57 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Schreiben Sie ein Programm Isbn10.java, das mit der Methode getLine eines Scanner-Objekts
  2. einen ISBN-10-Code (Internationale Standardbuchnummer) als String einliest und seine Gültigkeit
  3. überprüft.
  4. Nutzen Sie dieses Rahmenprogramm:
  5. import java.util.Scanner;
  6. class Isbn10 {
  7. public static final int OK = 0;
  8. public static final int FALSCHES_ZEICHEN = 1;
  9. public static final int FALSCHE_PRUEFSUMME = 2;
  10. public static final int FALSCHE_LAENGE = 3;
  11. static int validityIsbn10(String isbn) {
  12. // TODO: Ihr Code hier...
  13. return OK;
  14. }
  15. public static void main(String[] args) {
  16. System.out.print("ISBN eingeben: ");
  17. Scanner scanner = new Scanner(System.in);
  18. String isbn = scanner.nextLine();
  19. scanner.close();
  20. switch (validityIsbn10(isbn)) {
  21. // TODO: Ihr Code hier...
  22. }
  23. }
  24. }
  25. validIsbn10 gibt als Wert die eine der Konstanten OK, KEINE_ZIFFER, FALSCHE_PRUEFSUMME und
  26. FALSCHE_LAENGE zurück. Die Benennung der Konstanten gibt an, in welchem Fall sie jeweils zum
  27. Einsatz kommen sollen.
  28. Bauen Sie anhand der folgenden Teilaufgaben das Programm schrittweise auf. Dazu starten wir
  29. zunächst mit einem kürzeren, einfacheren Code.
  30. a) Unser verkürzter Code bestehe zunächst aus nur 5 Zi ern a1a2a3a4a5. Die erste Ausbaustufe
  31. überprüft, ob es sich um Zi ern handelt.
  32. Beispieldialog (rot = Benutzereingabe):
  33. ISBN eingeben: 47114
  34. OK
  35. Eingabe eines anderen Zeichens als einer Zi er soll zu einer Programmbeendigung mit Fehlermeldung
  36. führen:
  37. ISBN eingeben: 47%14
  38. Fehler: Keine Ziffer
  39. b) In der nächsten Ausbaustufe soll die letzte Zi er a5 als Prüfzi er dienen. Dazu werden die vier
  40. Zi ern a1; a2; a3; a4 mit ihrer Stelligkeit multipliziert und addiert:
  41. sum = 1  a1 + 2  a2 + 3  a3 + 4  a4
  42. Der Code sei gültig, wenn sum % 7 == a5 % 7.
  43. Wichtiger Tipp: DenWert einer Zi er vom Typ char erhalten Sie, indem Sie '0' subtrahieren:
  44. char ziffer = '7';
  45. int zahl = (int) (ziffer - '0'); // zahl ist 7
  46. Beispieldialoge (rot = Benutzereingabe):
  47. ISBN eingeben: 47114
  48. OK
  49. denn
  50. (1  4 + 2  7 + 3  1 + 4  1) % 7 = 25 % 7 == 4
  51. ISBN eingeben: 29086
  52. Fehler: Falsche Pruefsumme
  53. denn
  54. (1  2 + 2  9 + 3  0 + 4  8) % 7 = 52 % 7 != 6
  55. c) Modifizieren Sie das Programm nun so, dass statt unseres vereinfachten der tatsächliche ISBN-
  56. 10-Code verwendet wird:
  57. ˆ Es wird eine Zeichenkette mit 10 Zi ern a1; a2; : : : ; a10 eingelesen.
  58. ˆ Die Prüfzi er ist nun a10. Diese kann im Unterschied zu den Zi ern davor auch ein großes
  59. X sein. X entspricht dem Zahlenwert 10.
  60. ˆ Es dürfen nicht mehr oder weniger als 9 Zi ern plus eine Prüfzi er sein.
  61. ˆ Die Zi ern a1; : : : ; a9 werden wieder mit ihrer Stelligkeit multipliziert und addiert:
  62. sum = 1  a1 + : : : + 9  a9
  63. Der Code sei gültig, wenn sum % 11 == a10 % 11.
  64. Beispieldialoge (rot = Benutzereingabe):
  65. ISBN eingeben: 344615497
  66. Fehler: Falsche Laenge
  67. ISBN eingeben: 34-46154-973
  68. OK
  69. denn
  70. (1  3 + 2  4 + 3  4 + 4  6 + 5  1 + 6  5 + 7  4 + 8  9 + 9  7) % 11 = 245 % 11 == 3
  71. Weitere gültige ISBN-Nummern zum Testen: 0130351180, 3446404341, 609922713X. Testen Sie
  72. auch die Erkennung von Fehlern bei ungültigen Formaten!
  73. d) Die ISBN-Nummern enthalten häufig Trennstriche ('-'). Diese sollen ignoriert werden1. Also
  74. soll auch 6-099-22713-X eine gültige ISBN-Nummer sein.
  75. 1Zur Vereinfachung gehen wir davon aus, dass das letzte Zeichen kein Trennstrich sein darf.
  76. Das Programm in seiner vollständigen Fassung ist abzugeben. Die Überprüfung auf Gültigkeit
  77. der ISBN-10 muss in eine Funktion
  78. static void isValidIsbn10(String isbn)
  79. ausgelagert sein.
RAW Paste Data
Top