Integer "aufteilen"

  • Antworten:8
  • OffenNicht stickyBentwortet
  • Forum-Beiträge: 11

19.04.2015, 15:57:59 via Website

Hallo zusammen,
ich bin aktuell dabei eine App zu programmeiern und stehe vor folgendem Problem:
Ich habe einen Integer, der die Punktzahl angibt.
Nun möchte ich versuchen, die einzelnen "Bausteine" des Integers aufzuteilen.
D.h. wenn ich bspw. den Endpunktestand 625 habe möchte ich die Zahlen 6, 2 und 5 ausgeliefert bekommen.
Bisher habe ich im Internet leider nichts brauchbares gefunden und hoffe deshalb auf eure Hilfe! :)
Viele Grüße Bene.

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.182

19.04.2015, 17:47:30 via App

Direkt fällt mir auf die schnelle jetzt nichts ein. Nur Integer in einen steing und dann eine for schleife über alle Zeichen .

In der For steht dann string.getCharAt(i).
Das kannst du dann wieder in ein Integer parsen und in einem Array speichern

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
  • Forum-Beiträge: 2.492

19.04.2015, 19:15:31 via Website

Oder mit dem Modulo Operator % und der Integerdivision:
625 % 10 = 5
625 / 10 = 62
62 % 10 = 2
62 / 10 = 6
6 % 10 = 6

Dann hast du die Ziffern falsch herum du kannst es auch so machen:
625 / 100 = 6
625 - 6*100 = 25
25 / 10 = 2
25 - 2*10 = 5
5 / 1 = 5

Die vorgehensweise hängt davon ab was du willst und wie viel du von den Zahlen weißt (Länge).

Antworten
  • Forum-Beiträge: 1.904

19.04.2015, 21:41:36 via App

Lars F.

Oder mit dem Modulo Operator % und der Integerdivision:
625 % 10 = 5
625 / 10 = 62
62 % 10 = 2
62 / 10 = 6
6 % 10 = 6
[...]

Finde ich sehr elegant! Das würde ich benutzen. Die Ergebnisse würde ich in ne List tun, und zwar immer ganz vorne einfügen.

Wenn dir mein Beitrag gefällt, kannst dich einfach mit dem 👍 "Danke"-Button auf der Website dieses Forums bedanken. 😀

Why Java? - Because I can't C#

Antworten
  • Forum-Beiträge: 11

19.04.2015, 21:51:46 via App

Schon mal danke für die Antworten! :)
Kann mir wohl jemand auch ein Praxisbeispiel geben, wie ein wirklicher Code aussehen würde? Denn ich habe Probleme vor stellen zu können, wie das genau funktioniert, weil es ja immer unterschiedliche Zahlen seien können.
Ich freue mich über jede Antwort :)
viele Grüße Bene :)

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.182

19.04.2015, 22:29:22 via App

ohne es getestet zu haben hier mal etwas pseudocode:

int x = deineZahl;
int len = (int)(Math.log10(x)+1)

for(int i=0;i< len;i++)
// für jede stelle der Zahl
{

int digit= x%10;
//hier dann noch dein arr.add(digit)
x= x/10;

}

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
  • Forum-Beiträge: 2.243

21.04.2015, 13:25:33 via Website

Mit modulo wäre definitiv der sauberste Weg, aber wenn man die Mathematik dahinter nicht kennt, baut man da auch schnell Fehler ein.
Wenn auch Strings reichen:

int score = 625;

String[] digits = (score + "").split("");      // liefert ["","6","2","5"] - also Iteration bei 1 beginnen
String[] digits = (score + "").split("(?!^)"); // liefert ["6","2","5"] - also Iteration bei 0 beginnen

char[] digits = (score + "").toCharArray()     // liefert ['6', '2', '5'] als chars

— geändert am 21.04.2015, 13:26:36

Antworten
  • Forum-Beiträge: 11

29.04.2015, 22:11:00 via App

Alles klar, danke für die Hilfe.
Jetzt funktioniert alles wie es soll :)
Viele Grüße Bene :)

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.182

29.04.2015, 22:13:50 via App

Bitte setze deinen Thread noch auf Beantwortet, indem du im Browser über deinem ersten Post auf "Mehr"->"Beantwortet" klickst.

Danke (smug)

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten

Empfohlene Artikel