ISBN Prüfziffer berechnen

fluxinello

Mitglied
Hi,
Ich soll von einer ISBN Nummer die Prüfziffer, also die letzte Zahl berechnen.
In der Aufgabenstellung steht auch wie man sie berechnet:
10 = (∑ ∙ 9 =1 ) 11 = (1 ∙ 1 + 2 ∙ 2 + ⋯ + 9 ∙ 9 ) 11

Jetzt soll ich das ganze zusätzlich in einer Klasse machen zum testen via Schnittstelle.

Da ich euch aber nicht wieder nach der verdammten Lösung fragen will, würde ich gerne wissen in wiefern ich mir das ganze klarer machen kann also anhand von Tutorials oder Videos.
Denn ich habe einfach keinen Ansatz wie ich das ganze angehen kann und das wiederholen der letzten Vorlesungen hilft mir ehrlich gesagt nicht so gut weiter.

Kennt jemand eventuell einen guten Java Youtube Kanal wo alles gut erklärt wird oder hat andere Wege wie ich besser verstehe solche Aufgaben anzugehen?
 

mrBrown

Super-Moderator
Mitarbeiter
Zwar kein Video oä, aber vllt kann man ja einen Ansatz erarbeiten ;)

Wie würdest du denn von "1 23123 123" Schritt für Schritt per Hand die Prüfziffer berechnen?
 

fluxinello

Mitglied
1*2 + 2*2 + 3*3 + 1*4 + 2*5 + 3*6 + 1*7 + 2*8 + 3*9 = Ergebnis mod 11
Aber ich komme trotzdem nicht drauf.
Mir ist klar, dass ich wohl die ISBN Zahlen alle mit einer Zahl, immer +1 aufsteigend multiplizieren muss, wie oben eben. Und dann das Ergebnis also die Summe modulo 11, wahrscheinlich in einer Schleife?
 

fhoffmann

Top Contributor
Hallo fluxinello,

du musst für deine Aufgabe zwei Probleme lösen:
1. Berechnung der Prüfziffer,
2. eine eigene Klasse schreiben und die Berechnung testen.
Obwohl es in diesem Forum nicht gerne gesehen ist, wenn fertige Lösungen präsentiert werden, schenke ich dir den zweiten Teil der Aufgabe. Ich gehe in meiner Lösung davon aus, dass dir die ersten 9 Ziffern als int[] vorliegen (das ist die einfachste Version und du hast uns darüber keine Informationen gegeben). Sollten sie jedoch als String (mit Leerzeichen oder Bindestrichen) oder als long vorliegen, ist weitere Arbeit notwendig.
Die Berechnung der Prüfziffer musst du dann selber erledigen. Wenn dabei konkrete Probleme auftreten, kannst du natürlich gerne fragen (am liebsten mit dem bisherigen Code, den du erstellt hast).
Java:
public class Isbn {

    public static int berechnePruefziffer(int[] ziffern) {
        int pruefziffer = -999;
        // berechne pruefziffer
        return pruefziffer;
    }

    public static void main(String[] args) {
        int[] testarray = {1, 2, 3, 1, 2, 3 ,1, 2, 3};
        int pruefziffer = berechnePruefziffer(testarray);
        System.out.println(pruefziffer);
    }
}

Gruß
Fritz
 

fluxinello

Mitglied
Schleife ist schon mal der richtige Weg ;)
Was müsste da denn in einer Schleife laufen?
Ich hätte eventuell 2 Schleifen gemacht, in der ersten Schleife werden alle 9 Zahlen abgefragt.
In der zweiten Schleife werden dann die eingegebenen Zahlen mit den entsprechenden Zahlen von 1-9 multipliziert.
Dann eventuell ein Assert, welches festsetzt, dass wenn 10 als Prüfziffer rauskommt, es als X dargestellt wird (teil der aufgabenstellung die ich nicht erwähnt habe).
Habe außerdem noch nicht ganz verstanden, was ein- und auslesen bedeutet.

Meine grobe Vermutung wäre einfach mal, dass ich meiner Klasse eine Zahl oder etwas ähnliches mitteile, die dann innerhalb oder außerhalb der Klasse (z.B. von ner anderen Klasse) verarbeitet wird.
Auslesen würde ich sagen, wäre dass wenn ich ne Eingabe mache bei z.B. Wie ist dein Name? ich mit "Anton" antworte, und er dieses "Anton" dann quasi ausgibt.

@fritz: Ich danke dir, aber wie schon gesagt, mich pisst es selber an, dass ich nichts gebacken bekomme. Daher will ichs lieber ohne Ergebnis lösen, und lieber mit Erklärungen was ich machen muss z.B.
 

mrBrown

Super-Moderator
Mitarbeiter
Ich hätte eventuell 2 Schleifen gemacht, in der ersten Schleife werden alle 9 Zahlen abgefragt.
Meinst du zum einlesen der Zahlen? Wenn ja, lass das erstmal außen vor, das ganze soll ja über eine Schnittstelle passieren. Deine Funktion zum Berechnen erwartete einfach nur die ISBN in einem dir passenden Format (sein es String, Array, Liste, etc), wo das herkommt kann dir egal sein.

In der zweiten Schleife werden dann die eingegebenen Zahlen mit den entsprechenden Zahlen von 1-9 multipliziert.
Das klingt richtig ;)
Dann eventuell ein Assert, welches festsetzt, dass wenn 10 als Prüfziffer rauskommt, es als X dargestellt wird (teil der aufgabenstellung die ich nicht erwähnt habe).
Das klingt auch passend ;)

Meine grobe Vermutung wäre einfach mal, dass ich meiner Klasse eine Zahl oder etwas ähnliches mitteile, die dann innerhalb oder außerhalb der Klasse (z.B. von ner anderen Klasse) verarbeitet wird.
Jein, erstmal brauchst du nur eine Klasse mit der Funktion zum berechnen.

Habe außerdem noch nicht ganz verstanden, was ein- und auslesen bedeutet.
Auslesen würde ich sagen, wäre dass wenn ich ne Eingabe mache bei z.B. Wie ist dein Name? ich mit "Anton" antworte, und er dieses "Anton" dann quasi ausgibt.

Ist Einlesen/Ausgeben Teil der Aufgabenstellung? Wenn ja, verschieb es auf später ;)
Wenn nein, dann ist's ja egal ;)
 

fluxinello

Mitglied
Ok danke dir schonmal.
Ich hab mich jetzt mal in das Thema Arrays und Schleifen eingelesen und habe jetzt mal selbstständig ohne copy & paste oder ablesen nen kleinen Code geschrieben der NUR die Funktion umfasst, die Pruefziffer zu berechnen. Dass ich die Funktion über das Interface bzw. der Schnittstelle aufrufe werde ich noch machen wenn die Funktion in Ordnung ist.

Java:
  public static long buildIsbn(long i) {
      long ergebnis;
      long pruefziffer;
  long[]isbnArray = {1,2,3,4,5,6,7,8,9};
  for(long i=1; i<=9, i++) {
  if (i * zahl1 +
      i * zahl2 +
      i * zahl3 +
      i * zahl4 +
      i * zahl5 +
      i * zahl6 +
      i * zahl7 +
      i * zahl8 +
      i * zahl9)
      ergebnis = i * zahl1 + i * zahl2 + i * zahl3 + i * zahl4 + i * zahl5 + i * zahl6 + i * zahl 7 + i * zahl8 + i * zahl9);
      pruefziffer = ergebnis % 11;
      return pruefziffer;
    }
}

Hoffe auf Verbesserungsvorschläge von denen ich was lernen kann! :p
Danke schonmal im Vorraus!
Achja, bitte geht nicht zu hart mit mir um, stehe noch ganz am Anfang :D
 

mrBrown

Super-Moderator
Mitarbeiter
Was soll denn der Parameter long i sein?

Und was das long[]isbnArray?

Und was sind zahl1-zahl9, die fallen da vom Himmel...

Und was willst du mit dem if (...) testen?
 

fluxinello

Mitglied
das long i sollten eigtl die Zahlen 1-9 im Array sein und das zweite ein Array mit den Zahlen von 1-9 welche man mit den 9 eingegebenen Zahlen multipliziert.
Zahl1 - zahl9 sind die zahlen die man später eingbit, welche mit den zahlen aus dem array multipliziert werden.

ja das mit dem if ist quatsch merke ich auch gerade :D
 

mrBrown

Super-Moderator
Mitarbeiter
das long i sollten eigtl die Zahlen 1-9 im Array sein und das zweite ein Array mit den Zahlen von 1-9 welche man mit den 9 eingegebenen Zahlen multipliziert.
Du hast dann 3 mal die Zahlen 1-9, einmal in i, in isbnArray und in dem for-loop

Deine Rechnung im for-Loop wird jetzt auch 9 mal ausgeführt ;)

Zahl1 - zahl9 sind die zahlen die man später eingbit, welche mit den zahlen aus dem array multipliziert werden.
Eingelesen werden müssen keine Zahlen, zumindest nicht in der Funktion, die eingelesen Werte werden der Funktion als Parameter übergeben ;)
 

fluxinello

Mitglied
Java:
public static long buildIsbn(long i) {
      long ergebnis;
      long pruefziffer;
      long[]i = {1,2,3,4,5,6,7,8,9};
      for(long i=1; i <=9, i++) {
      ergebnis = i * zahl1 + i * zahl2 + i * zahl3 + i * zahl4 + i * zahl5 + i * zahl6 + i * zahl 7 + i * zahl8 + i * zahl9);
      pruefziffer = ergebnis % 11;
      return pruefziffer;
    }
So besser?
 

mrBrown

Super-Moderator
Mitarbeiter
Naja, deine zahl1-zahl9 fallen immer noch vom Himmel, dein i ist drei mal definiert (einmal als array, zweimal als long), und deine Rechnung wird immer noch 9 mal ausgeführt ;)


Um das mal andersrum zu versuchen, was wäre denn ein Sinnvoller Parameter für eine Funktion berechnePruefziffer?
 

fluxinello

Mitglied
long ergebnis?
naja ich weiß nicht wie ich die zahlen 1-9 deifinieren soll? Gibt doch bestimmt ne andere Möglichkeit als 9x long zahl1 usw zu schreiben.
weiß nicht ganz was ich anders machen soll damit es wenigstens formal richtig ist und i nicht 3x definiert ist :D
 

VfL_Freak

Top Contributor
Moin,

...deine Rechnung wird immer noch 9 mal ausgeführt ;)
na, das nun nicht gerade :p
Es dürfte wegen der öffnenden Klammer hinter dem Kopf der for-Schleife gar nicht erst compilieren ....

public static long buildIsbn(long i) {
long ergebnis;
long pruefziffer;
long[]i = {1,2,3,4,5,6,7,8,9};
for(long i=1; i <=9, i++) { // !!!
ergebnis = i * zahl1 + i * zahl2 + i * zahl3 + i * zahl4 + i * zahl5 + i * zahl6 + i * zahl 7 + i * zahl8 + i * zahl9);
pruefziffer = ergebnis % 11;
return pruefziffer;
}

Gruß Klaus
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
sserio Prüfziffer einer ISBN Nummer herrausfinden. Java Basics - Anfänger-Themen 14
A OOP ISBN-Prüfziffer Java Basics - Anfänger-Themen 7
F ISBN Prüfziffer Java Basics - Anfänger-Themen 2
R ISBN-10-Code überprüfen Java Basics - Anfänger-Themen 7
M ISBN-Code Java Basics - Anfänger-Themen 26
E ISBN Nummer mit boolean Java Basics - Anfänger-Themen 5
W ISBN 13-Stellig Java Basics - Anfänger-Themen 3
M Input/Output ISBN Leser - falsche Eingabe ausgeben Java Basics - Anfänger-Themen 2
J Gültigkeit einer ISBN Nummer prüfen! Java Basics - Anfänger-Themen 5
N ISBN nummern überprüfen Java Basics - Anfänger-Themen 1
Haave EAN-13-Prüfziffer: Vermeiden von Eingaben mit mehr/weniger als 12 Ziffern Java Basics - Anfänger-Themen 3
D Prüfziffer Java Basics - Anfänger-Themen 27
M OOP Brüche nicht richtig berechnen Java Basics - Anfänger-Themen 3
V Durchschnittliche Volatility in Prozent für 4 Stunden berechnen Java Basics - Anfänger-Themen 14
T Fibonacci mit einer Hilfsmethode berechnen Java Basics - Anfänger-Themen 10
laxla123 Quersumme berechnen Java Basics - Anfänger-Themen 1
I For Schleife Summe berechnen Java Basics - Anfänger-Themen 13
S Vollmond berechnen und ausgeben Java Basics - Anfänger-Themen 12
S Vollkommene Zahl berechnen und ausgeben Java Basics - Anfänger-Themen 16
A Berechnen Moor Nachbarschaft Java Basics - Anfänger-Themen 5
E Geburtstag im Schaltjahr berechnen Java Basics - Anfänger-Themen 24
Lion.King Schaltjahr berechnen Java Basics - Anfänger-Themen 31
E Alter (Laufzeit) berechnen Java Basics - Anfänger-Themen 11
I Zuschläge berechnen Java Basics - Anfänger-Themen 15
L mit Fakultät mathematische Formel berechnen Java Basics - Anfänger-Themen 5
TanTanIsTrying Durschnitt berechnen von eingegebener Zahl bis 1 heruntergezählt Java Basics - Anfänger-Themen 9
L Präfix berechnen Java Basics - Anfänger-Themen 33
F Abstand zwischen zwei Objekten berechnen wie? Java Basics - Anfänger-Themen 1
Aemulit Java Schaltjahr berechnen Code Java Basics - Anfänger-Themen 7
Poppigescorn Quersumme Berechnen mit einer While Schleife Java Basics - Anfänger-Themen 13
I Potenz berechnen mit for-Schleife Java Basics - Anfänger-Themen 3
A Standardabweichung in Java berechnen Java Basics - Anfänger-Themen 10
H Gesamtabweichung mit Array berechnen Java Basics - Anfänger-Themen 2
G Java Rabatt berechnen Java Basics - Anfänger-Themen 8
V Rückgeld berechnen Java Basics - Anfänger-Themen 6
eleonori Durchschnitt aller Werte eines Baums berechnen Java Basics - Anfänger-Themen 5
Ianatrix Zahlen von a bis b berechnen Java Basics - Anfänger-Themen 7
L Max, min, Summe und Durchschnitt berechnen Java Basics - Anfänger-Themen 4
L Anhalteweg berechnen Java Basics - Anfänger-Themen 6
Aeon Erste Schritte Preise berechnen mit do-while Java Basics - Anfänger-Themen 9
M Quadratwurzel berechnen Java Basics - Anfänger-Themen 8
V Wachstum berechnen und in Ist-Formel verwenden Java Basics - Anfänger-Themen 5
N Variable aus anderen Variablen in statischer Klasse berechnen/abspeichern? Java Basics - Anfänger-Themen 4
M Abschreibungsplan berechnen Java Basics - Anfänger-Themen 23
V Gehalt berechnen in Java Java Basics - Anfänger-Themen 6
justemii Gehalt berechnen - Aufgabe Java-Programm Java Basics - Anfänger-Themen 9
L Anzahl der benachbarten Minen berechnen und setzen Java Basics - Anfänger-Themen 15
J Array Speicherplatz berechnen Java Basics - Anfänger-Themen 35
H Eingabedaten berechnen Java Basics - Anfänger-Themen 9
B Tranportkosten berechnen mit unterschiedlichen MwSt Java Basics - Anfänger-Themen 9
L Anzahl der Paare deren Summe = 0 ergibt berechnen Java Basics - Anfänger-Themen 0
V Erste Schritte Berechnen von Sinus; sin(x) ohne Math.* Java Basics - Anfänger-Themen 1
J Hilfe bei Java Aufgabe (Restschuld berechnen) Java Basics - Anfänger-Themen 11
N Ein Datum berechnen Java Basics - Anfänger-Themen 3
T Sparplan berechnen Java Basics - Anfänger-Themen 4
F Abstand zum Durchschnitt von 5 Zahlen berechnen... Java Basics - Anfänger-Themen 16
B java.util.Date berechnen Java Basics - Anfänger-Themen 11
P Mittelwert Arrayelemente berechnen Fehler Java Basics - Anfänger-Themen 5
CptK Best Practice Schussparabel berechnen Java Basics - Anfänger-Themen 3
T Modulo / Pow berechnen Java Basics - Anfänger-Themen 4
E Statistische Kennzahlen berechnen Java Basics - Anfänger-Themen 2
F Switch Case Modulo berechnen Java Basics - Anfänger-Themen 12
B mehrere Werte mit scanner und while schleife einlesen, max berechnen bzw addieren Java Basics - Anfänger-Themen 2
C Preis berechnen mit Java Java Basics - Anfänger-Themen 4
B Zahl in String abspeichern und später berechnen Java Basics - Anfänger-Themen 15
N Best Practice Image recognition fuzzy Superhash berechnen Java Basics - Anfänger-Themen 1
Dawinartor Erste Schritte Schaltjahr berechnen Java Basics - Anfänger-Themen 1
L Pi berechnen Java Basics - Anfänger-Themen 1
CptK Term (als String) berechnen und ausgeben Java Basics - Anfänger-Themen 10
L Den Winkel zwischen zwei Vektoren berechnen! Java Basics - Anfänger-Themen 2
J Variablen arithmetischen Mittelwert berechnen Java Basics - Anfänger-Themen 5
K Matrixen berechnen nach Worker Master Paradigma mit Threads Java Basics - Anfänger-Themen 4
R Winkel berechnen bzw. Geraden sortieren Java Basics - Anfänger-Themen 33
I Schnittpunkt zweier Geraden berechnen Java Basics - Anfänger-Themen 25
M Erste Schritte Mittelwert berechnen -> Methode in der Methode? Java Basics - Anfänger-Themen 14
S Compiler-Fehler Schaltjahr berechnen Java Basics - Anfänger-Themen 5
B Fakultätsfunktion Rekursiv Berechnen aber mit Array Java Basics - Anfänger-Themen 10
S Durchschnitt berechnen aus zwei Textfeldern Java Basics - Anfänger-Themen 21
D Summe berechnen mit verändertem Wert aus Schleife Java Basics - Anfänger-Themen 1
R Liga Berechnen Java Basics - Anfänger-Themen 1
P Klassen Berechnen mehrerer Map-Werte Java Basics - Anfänger-Themen 13
R Fussballtabellen berechnen Java Basics - Anfänger-Themen 12
J Fibonacci -Folge rekursiv berechnen Java Basics - Anfänger-Themen 18
J Durchschnitt jeder Zeile und und Spalte in einem 2D Arrays berechnen Java Basics - Anfänger-Themen 6
F Die Teilersumme einer Eingabe berechnen Java Basics - Anfänger-Themen 11
S Negafibonacci Folge berechnen Java Basics - Anfänger-Themen 24
G Array Mittelwert berechnen, wie? Java Basics - Anfänger-Themen 8
S Primzahlen berechnen funktioniert nicht richtig Java Basics - Anfänger-Themen 1
N Mit LocalDate alter berechnen Java Basics - Anfänger-Themen 3
J Laufzeit berechnen/Laufzeitanalyse Java Basics - Anfänger-Themen 2
N Arrays mit Zufallzahlen füllen und Statistiken berechnen Java Basics - Anfänger-Themen 5
A Wochentag berechnen Java Basics - Anfänger-Themen 10
Ste3et_C0st Vectoren berechnen Java Basics - Anfänger-Themen 8
L Durchschnitt in der Schleife berechnen Java Basics - Anfänger-Themen 11
A Kreisumfang/-Fläche vom Kreis berechnen Java Basics - Anfänger-Themen 39
L Wochentag berechnen Java Basics - Anfänger-Themen 5
L Rekursive Methode a * b berechnen Java Basics - Anfänger-Themen 2
B OOP Summe aus verschiedenen Instanzen einer Klasse berechnen Java Basics - Anfänger-Themen 2
N Dauer zwischen zwei LocalDateTime Objekten berechnen? Java Basics - Anfänger-Themen 4
P Ausdrücke berechnen Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben