Arrays

katchy

Aktives Mitglied
Hallo liebe Gemeinde :)
ich habe eine Programmieraufgabe von meinem Prof. bekommen und stecke irgendwie fest
Erstmal die Aufgabe:
Euro-Banknoten der ersten Serie haben eine eindeutige Seriennummer, die aus
einem führenden Großbuchstaben, einer Zahl mit 10 Ziffern und einer Prüfziffer
bestehen.
Beispiel: Z 6016220022 6
Der führende Buchstabe codiert die nationale Zentralbank (NZB), die den Geldschein
in Umlauf gebracht hat. Sie wird NZB-Nummer genannt.
Die Prüfziffer berechnet sich wie folgt:
 Der Buchstabe wird durch seine Position im lateinischen Alphabet ersetzt (bei
A also 1, bei Z 26)
 Es wird die Quersumme dieser Positionszahl und der 10 Ziffern berechnet (im
Beispiel 2+6+6+0+1+6+2+2+0+0+2+2 = 29)
 Von der Quersumme wird der ganzzahlige Rest zum nächst kleineren
Vielfachen von 9 bestimmt (Modulo 9) (im Beispiel 2)
 Der Rest wird von 8 subtrahiert. Das Resultat ist die Prüfziffer (im Beispiel 6).
Es sei denn, die Subtraktion von 8 vom Rest ergibt den Wert 0, dann ist die
Prüfziffer 9.
Implementieren Sie in Java eine Funktion, die als ersten Parameter eine NZBNummer
als Buchstaben (char-Wert) und als zweiten Parameter ein 10-elementiges
Array mit int-Werten übergeben bekommt. Die Funktion soll die Prüfziffer der
entsprechenden Euro-Banknote berechnen und als int-Wert zurückliefern.
static int getEuroPruefziffer(char nzbNummer, int[] ziffern)
Sie können davon ausgehen, dass die übergebenen Parameter korrekt sind.
Schreiben Sie weiterhin ein kleines Testprogramm für Ihre Funktion.



Mein Code sieht bislang so aus:
package example;

public class Aufgabe16 {
public static void main(String[] args) {

IO.println ("Deine Prüffzifferlautet: " + nzbNummer1 + ziffern);
}

static int getEuroPruefziffer(char nzbNummer, int[] ziffern){
nzbNummer = (char) ('a' + 25*Math.random());

ziffern = new int[10];
ziffern [1] = (int) (Math.random()*9);
ziffern [2] = (int) (Math.random()*9);
ziffern [3] = (int) (Math.random()*9);
ziffern [4] = (int) (Math.random()*9);
ziffern [5] = (int) (Math.random()*9);
ziffern [6] = (int) (Math.random()*9);
ziffern [7] = (int) (Math.random()*9);
ziffern [8] = (int) (Math.random()*9);
ziffern [9] = (int) (Math.random()*9);
ziffern [10] = (int) (Math.random()*9);
return ziffern.length;

}


}

Er gibt mir leider nicht d gewünschte Ergebniss aus :/
wie kann ich die Funktion am besten oben einbinden?

Liebe Grüße
Katchy
 

katchy

Aktives Mitglied
naja ich dachte weil ja ein Buchstabe generiert werden soll und ein Array von 10 Zahlen :D die soll das Programm mir doch dann zufällig generieren oder nicht?
 

JStein52

Top Contributor
Das Generieren deiner Test-Nummer machst du in main und deine Methode getEuroPruefZiffer macht nur noch genau das was der Name sagt und was du im Text beschrieben hast.
 

InfectedBytes

Top Contributor
Die Methode bekommt den Buchstaben und das Array als Parameter übergeben.
Du sollst nun die Prüfzimmer berechnen und nicht einfach Zufall machen.
Und wie das läuft steht in deiner Aufgabe:
 Der Buchstabe wird durch seine Position im lateinischen Alphabet ersetzt (bei
A also 1, bei Z 26)
 Es wird die Quersumme dieser Positionszahl und der 10 Ziffern berechnet (im
Beispiel 2+6+6+0+1+6+2+2+0+0+2+2 = 29)
 Von der Quersumme wird der ganzzahlige Rest zum nächst kleineren
Vielfachen von 9 bestimmt (Modulo 9) (im Beispiel 2)
 Der Rest wird von 8 subtrahiert. Das Resultat ist die Prüfziffer (im Beispiel 6).
Es sei denn, die Subtraktion von 8 vom Rest ergibt den Wert 0, dann ist die
Prüfziffer 9.
 

JStein52

Top Contributor
Das könnte dann z.B. so aussehen:

Code:
package example;

public class Aufgabe16 {
public static void main(String[] args) {
  int[] ziffern = new int[10];
  ziffern [0] = (int) (Math.random()*9);
  ziffern [1] = (int) (Math.random()*9);
  ziffern [2] = (int) (Math.random()*9);
  ziffern [3] = (int) (Math.random()*9);
  ziffern [4] = (int) (Math.random()*9);
  ziffern [5] = (int) (Math.random()*9);
  ziffern [6] = (int) (Math.random()*9);
  ziffern [7] = (int) (Math.random()*9);
  ziffern [8] = (int) (Math.random()*9);
  ziffern [9] = (int) (Math.random()*9);

  char nzbNummer = (char) ('a' + 25*Math.random());

  IO.println ("Deine Prüffzifferlautet: " + nzbNummer1 + ziffern);
  int pruefSumme = getEuroPruefziffer(nzbNummer, ziffern);
}

static int getEuroPruefziffer(char nzbNummer, int[] ziffern){
  int pruefZiffer = 0;

  // hier jetzt die Berechnung

return pruefZiffer;

}


}
 

Neue Themen


Oben