# Arrays



## katchy (6. Dez 2015)

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


----------



## Thallius (6. Dez 2015)

Du magst Zufallszahlen oder? Trotzdem habe ich keine Ahnung wozu man die in dieser Aufgabe brauchen könnte...


----------



## katchy (6. Dez 2015)

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


----------



## Thallius (6. Dez 2015)

Ja aber doch nur in dem Testumfeld und nicht in der zu erstellenden Methode.


----------



## katchy (6. Dez 2015)

Und wie könnte ich dass dann besser umsetzen?


----------



## JStein52 (6. Dez 2015)

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 (6. Dez 2015)

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)
> ...


----------



## JStein52 (6. Dez 2015)

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


```
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;

}


}
```


----------

