# mehrere eingegebene Zahlen mit Zahlen von 1-9 multiplizieren



## fluxinello (26. Nov 2016)

Moin,
Wie gehe ich vor, wenn ich 9 eingegebene Zahlen, mit je Zahlen 1-9 multiplizieren will?
z.B: 987654321 = 9*1, 8*2, 7*3, 6*4 usw.
Gibt doch bestimmt ne Möglichkeit, die eingegebenen Zahlen nicht alle einzeln definieren zu müssen oder?
z.B:
int eingegebenZahl1,
int eingegebeneZahl2,

usw.

Beste Grüße,


----------



## Flown (26. Nov 2016)

Wie sieht denn deine Eingabe aus? Was hast du bereits?


----------



## fluxinello (26. Nov 2016)

Hab noch nichts geschrieben, wollte mir erstmal ein Konzept machen wie ich anfange.
Und wenn ich mein grobes Konzept hab will ichs umsetzen 
Ihr sollt mir keinen Code oder sowas geben dafür, eher was man da machen kann, also welche Möglichkeiten es da gibt.


----------



## Robat (26. Nov 2016)

Ich würde folgendes machen:

- Die eingelesenen Werte in ein Array packen
- in einer for-Schleife die Werte 1 - 9 durchlaufen
- dein i (Zählervariable der for-Schleife) *mal *dem Array an der Stelle (i-1) rechnen   _i-1 weil dein Array ja beim Index 0 anfängt _
- Vorher solltest du noch prüfen ob der User wirklich 9 Zahlen eingegeben hat


----------



## DrZoidberg (26. Nov 2016)

Am besten geeignet für sowas ist eine ArrayList. Hier ist ein Beispiel dazu: https://wiki.freitagsrunde.org/Javakurs/Übungsaufgaben/ArrayList


----------



## NattleBet (26. Nov 2016)

Wieso keine Liste? Ich würde arrays nur zum übertragen von Daten nehmen.
Listen wären einfacher zu händeln und zu lesen.


----------



## Robat (26. Nov 2016)

NattleBet hat gesagt.:


> Listen wären einfacher zu händeln und zu lesen.


Aber er kennt ja die Länge des Arrays. Und ob er nun `arrayList.add(input)` oder `array[i] = input` schreibt sollte doch eig. egal sein. (Ich gehe mal davon aus, dass er die Eingabe der 9 Zahlen durch eine Schleife realisiert.)
Ich lass mich gerne eines besseren belehren [/i]


----------



## NattleBet (26. Nov 2016)

Bei arrays muss man immer mit dem Index rechnen. Beim Schreiben und Lesen kommen da einen Listen entgegen. Das Wissen, wo ein array anfängt und wann endet entfällt.


----------



## mrBrown (26. Nov 2016)

NattleBet hat gesagt.:


> Bei arrays muss man immer mit dem Index rechnen. Beim Schreiben und Lesen kommen da einen Listen entgegen. Das Wissen, wo ein array anfängt und wann endet entfällt.


Hier gibts den Vorteil nur beim schreiben, und da er weiß, wie viele Eingaben es gibt, bringt ihm die variable Größe nicht mal was. Beim Lesen brauch er so oder so den Index.

Das Wissen, dass ein Array bei 0 anfängt braucht er so oder so, auch bei der Liste^^


----------



## NattleBet (26. Nov 2016)

Du könntest auch eine Schleife so Schreiben for (int i=1; i<=9; i++)
was erstmal ein wenig intuitiver ist, weil du beim liste.add den Index nicht brauchst.


----------



## mrBrown (26. Nov 2016)

NattleBet hat gesagt.:


> Du könntest auch eine Schleife so Schreiben for (int i=1; i<=9; i++)
> was erstmal ein wenig intuitiver ist, weil du beim liste.add den Index nicht brauchst.


Dann hat er (wenn er denn zwei schleifen nutzt) zwei Schleifen mit unterschiedlichen Indizes, das ist nicht das intuitivste


----------



## Robat (26. Nov 2016)

Ich versteh immer noch nicht warum er 2 Schleifen nutzen sollte.. mit einer Schleife geht es doch wunderbar (siehe oben)


----------



## mrBrown (26. Nov 2016)

Robat hat gesagt.:


> Ich versteh immer noch nicht warum er 2 Schleifen nutzen sollte.. mit einer Schleife geht es doch wunderbar (siehe oben)


Das Einlesen braucht auch eine


----------



## Robat (26. Nov 2016)

Ach so meinst du das. Ich hab das jetzt so verstanden, dass er (warum auch immer) 2 Schleifen nur für die Berechnung braucht.
Das wollte irgendwie nicht in mein Kopf rein.

Das er zum Einlesen auch eine braucht ist richtig.


----------



## mariane (26. Nov 2016)

Wenn du immer 9 Ziffern hast, dann nimm sie als komplette 9 ziffrige Zahl entgegen und diviere ganzzahlig mit Restbetrachtung. Bevor ich mich jetzt "verkläre": ((x / 10 ^ n) mod 10)*(9-n)
^ heißt hier hoch, das ganze für n = 8 ... 0 in einer while-Schleife


----------



## fluxinello (26. Nov 2016)

Ich habe jetzt mal angefangen zu schreiben.
- Mein Plan war es, die 9 Zahlen die ich via main Methode später über die Konsole eingebe, in einem Array zu sammeln. 
- Dann will ich eine einlesen Methode schreiben, welche nach den 9 Zahlen die eingegeben werden sollen fragt. Diese eingegebenen Zahlen soll sich die einlesen Methode dann aus dem Array schnappen.

Warum soll ich denn jetzt 2 Schleifen benutzen? Eine wäre mir klar, um die Multiplikation der eingegebenen Zahlen mit den Zahlen 1-9. Aber wofür bei der Einlesenfunktion eine Schleife?


----------



## mrBrown (26. Nov 2016)

Weil du neun Zahlen einlesen willst.

Wie würdest du das denn ohne Schleife machen?


----------



## fluxinello (26. Nov 2016)

Ja jetzt wo ich drüber nachdenke, wirds mir auch klar 
Mein Plan lautet so:
- Array für die 9 Zahlen die ich eingebe machen.
- 1. Schleife zur wiederholten Abfrage der 9 eingegebenen Zahlen.
- 2. Schleife um die Multiplikation der eingegebenen Zahlen mit den Zahl 1-9

Ich habe jetzt in das Array die 9 eingabezahlen gepackt.
Sieht bei mir so aus:

```
String [] eingabeZahlen = { "zahl1", "zahl2","zahl3","zahl4","zahl5","zahl6","zahl7","zahl8","zahl9"};
```

Ist das soweit richtig mit dem String?
Natürlich sollen die zahlen an sich nen Intwert haben, aber zahl1, zahl2 usw kann ja kein int-wert sein oder? Müsste also dem String später nen Intwert zuweisen oder? Oder muss ich die irgendwie konvertieren?


----------



## DrZoidberg (26. Nov 2016)

Du kannst schreiben:
	
	
	
	





```
int[] eingabeZahlen = new int[9];
```
Strings brauchst du da nicht.


----------

