Ich habe eine Aufgabe bekommen und weiß überhaupt nicht, wie ich diese lösen soll >.<
2007 wurde die Internationale Standard-Buchnummer,
kurz ISBN genannt, 13-stellig eingeführt.
Beispielsweise ist 978-3-8274-1631-5 eine gültige 13-stellige ISBN. Die erste Zifferngruppe
ist 978 oder 979. Die zweite Gruppe gibt die Sprachgruppe an. Der Ziffer 3 können
wir entnehmen, dass das Buch im deutschsprachigen Raum erschienen ist. Die dritte Zifferngruppe
8274 gibt den Verlag an. Die vierte Zifferngruppe, hier 1631, identifiziert das
betreffende Buch. Die letzte Ziffer ist eine sogenannte Prüfziffer. Mithilfe der Prüfziffer
können z. B. einzelne fehlerhafte Ziffern oder zwei vertauschte Ziffern erkannt werden.
Natürlich kann nicht jeder Fehler entdeckt werden.
Die Prüfziffer wie folgt berechnet: Man multipliziert die erste Ziffer mit 1, die zweite
mit 3, die dritte mit 1 und abwechselnd weiter mit 3, 1, 3, 1, 3, 1, 3, 1 und 3. Die so
gewonnenen Produkte werden addiert. Die Differenz zur nächsten durch 10 teilbaren Zahl
ist die Prüfziffer. Für das obige Beispiel ergibt sich die Prüfziffer also wie folgt:
105 = 9 + 3 7 + 8 + 3 3 + 8 + 3 2 + 7 + 3 4 + 1 + 3 6 + 3 + 3 1
5 = 110 − 105
Ihre Aufgabe ist es ein Programm zu schreiben, das auf der Kommandozeile als Parameter
eine Zeichenfolge erhält und überprüft, ob die Zeichenfolge eine gültige 13-stellige
ISBN darstellt. Wenn die Prüfziffer fehlerhaft ist, soll die ISBN mit korrekter Prüfziffer
ausgegeben werden.
Beispiele:
javac Isbn.java
java Isbn 978-3-8274-1631-5
978-3-8274-1631-5 ist eine gültige ISBN.
java Isbn 978-3-446-44073-2
978-3-446-44073-2 ist eine fehlerhafte ISBN.
Gültig wäre 978-3-446-44073-9
Hinweise: Die Methode char charAt(int index) der Klasse String liefert das Zeichen,
das an der Stelle index des Strings ist. Ein Beispiel ist ("Test".charAt(0)==’T’)==true.
Durch den Typcast (int) erhält man das Zeichen als int-Wert. Die Zeichen ’0’,...,’9’
haben die int-Werte 48,...,57. Wegen der Codierung (s. Vorlesung) besitzen die Zeichen
’0’,...,’9’ nicht die int-Werte 0,...,9. Das Zeichen ’-’ besitzt den int-Wert 45. Die
Formatierung Ihres Programmes können Sie bei der Abgabe checken. Die Richtlinie zu
Javadoc müssen Sie bei dieser ersten Aufgabe noch nicht einhalten.
2007 wurde die Internationale Standard-Buchnummer,
kurz ISBN genannt, 13-stellig eingeführt.
Beispielsweise ist 978-3-8274-1631-5 eine gültige 13-stellige ISBN. Die erste Zifferngruppe
ist 978 oder 979. Die zweite Gruppe gibt die Sprachgruppe an. Der Ziffer 3 können
wir entnehmen, dass das Buch im deutschsprachigen Raum erschienen ist. Die dritte Zifferngruppe
8274 gibt den Verlag an. Die vierte Zifferngruppe, hier 1631, identifiziert das
betreffende Buch. Die letzte Ziffer ist eine sogenannte Prüfziffer. Mithilfe der Prüfziffer
können z. B. einzelne fehlerhafte Ziffern oder zwei vertauschte Ziffern erkannt werden.
Natürlich kann nicht jeder Fehler entdeckt werden.
Die Prüfziffer wie folgt berechnet: Man multipliziert die erste Ziffer mit 1, die zweite
mit 3, die dritte mit 1 und abwechselnd weiter mit 3, 1, 3, 1, 3, 1, 3, 1 und 3. Die so
gewonnenen Produkte werden addiert. Die Differenz zur nächsten durch 10 teilbaren Zahl
ist die Prüfziffer. Für das obige Beispiel ergibt sich die Prüfziffer also wie folgt:
105 = 9 + 3 7 + 8 + 3 3 + 8 + 3 2 + 7 + 3 4 + 1 + 3 6 + 3 + 3 1
5 = 110 − 105
Ihre Aufgabe ist es ein Programm zu schreiben, das auf der Kommandozeile als Parameter
eine Zeichenfolge erhält und überprüft, ob die Zeichenfolge eine gültige 13-stellige
ISBN darstellt. Wenn die Prüfziffer fehlerhaft ist, soll die ISBN mit korrekter Prüfziffer
ausgegeben werden.
Beispiele:
javac Isbn.java
java Isbn 978-3-8274-1631-5
978-3-8274-1631-5 ist eine gültige ISBN.
java Isbn 978-3-446-44073-2
978-3-446-44073-2 ist eine fehlerhafte ISBN.
Gültig wäre 978-3-446-44073-9
Hinweise: Die Methode char charAt(int index) der Klasse String liefert das Zeichen,
das an der Stelle index des Strings ist. Ein Beispiel ist ("Test".charAt(0)==’T’)==true.
Durch den Typcast (int) erhält man das Zeichen als int-Wert. Die Zeichen ’0’,...,’9’
haben die int-Werte 48,...,57. Wegen der Codierung (s. Vorlesung) besitzen die Zeichen
’0’,...,’9’ nicht die int-Werte 0,...,9. Das Zeichen ’-’ besitzt den int-Wert 45. Die
Formatierung Ihres Programmes können Sie bei der Abgabe checken. Die Richtlinie zu
Javadoc müssen Sie bei dieser ersten Aufgabe noch nicht einhalten.