# Länge einer Zahl



## steeeeel (5. Dez 2012)

Hey Leute kann mir jemand sagen, wie ich die Zeilenlänge einer Zahl in java bestimmen kann . etwa zum addieren bzw zum rechnen.


----------



## TKausL (5. Dez 2012)

Was bitte genau möchtest du? Eine Zeilenlänge einer Zahl?


----------



## steeeeel (5. Dez 2012)

ja genau um mit ihr zb die Addition nachzuprogrammieren bzw Subtraktion


----------



## TKausL (5. Dez 2012)

Was genau ist eine Zeilenlänge einer Zahl?


----------



## Gast2 (5. Dez 2012)

```
//Addition:
int a = 5;
int b = 3;
int ergebnis = a + b;
```

Was soll denn aber bitte eine Zeilenlänge einer Zahl sein?


----------



## nillehammer (5. Dez 2012)

Meinst Du vielleicht die Ziffernanzahl?

```
int zahl = 10;
int ziffernAnzahl = Integer.toString(zahl).length();
```


----------



## langhaar! (5. Dez 2012)

Es ist vermutlich die Anzahl der Zeichen einer Zahlendarstellung gemeint.

Beispiel für ein int:

```
int zahl = 1235656;
System.out.println((zahl+"").length());
```


----------



## Gast2 (5. Dez 2012)

Das braucht man aber wiederum wirklich nicht zum rechnen...


----------



## Trolllllll (5. Dez 2012)

Doch, wenn du es wie in der Grundschule Schrifftlich rechnen willst (stellenweise [warum man das will, gute frage])

```
1234
 5678
-----
 6912
```


----------



## steeeeel (5. Dez 2012)

ja war etwas blöd ausgedrückt also gemeint ist tatsächlich die Anzahl der Ziffern. Damit möchte ich die schriftliche Addition durchführen, bei der ich mit Überträgen rechnen muss.....Nur muss ich ja irgendwie kenntlich machen wenn eine zahl zb 19181 zwei Ziffern mehr besitzt als zb 131


----------



## Trolllllll (5. Dez 2012)

Die Antwort wurde dir schon von nillehammer sowie langhaar! gegeben, wie du dann weiter machen musst, denke ich, kannst du dir vorstellen oder brauchst du da auch anregungen.

Wenn du deine Zahl zu einem String convertiert hast, ist das quasie ein Chararray, so kannst du dann auf die einzelnen Ziffern einzelnt zugreifen ;-)


----------



## steeeeel (5. Dez 2012)

Ja das ganze muss ohne String ablaufen aber ich habe jetzt eine Methode gefunden ....Also mit mod und div funktioniert das ganz gut...


----------



## Landei (5. Dez 2012)

Man kann auch einfach den Zehnerlogarithmus nehmen: Fängt der mit 0 an, ist die Zahl (jedenfalls vor dem Komma) einstellig, bei 1 zweistellig u.s.w.


----------



## KranzKrone (5. Dez 2012)

modulo Rechnen, liefert dir immer die Reste einer Division. Das lernt man in der zweiten Klasse.

7 mod 3 = 1
7 div 3 = 2;

7 geteilt durch 3 ist 2 Rest 1...

Man kann auch die Zahlen alle in ein Array schrieben und dann ganz komplex mit einem zweiten Array. Das ganze ist so blödsinnig, weil in Java der String und int nix weiter als Objekte von CharSequenzen sind und somit wiederum auch nur Arrays in einem Computerspeicher. 

Aber mit einer Liste (oder auch zwei) könnte man so rechnen, ich frage mich allerdings warum? Man soll das Rad nicht zweimal erfinden.


----------



## Marco13 (5. Dez 2012)

http://www.java-forum.org/java-basics-anfaenger-themen/65207-laenge-integers-ermitteln.html


----------



## irgendjemandd (5. Dez 2012)

Meinst du so:


```
public static String add(String s1, String s2) {
        while (s1.length() < s2.length())
            s1 = '0' + s1;
        while (s2.length() < s1.length())
            s2 = '0' + s2;
        char[] result = new char[s1.length()];
        int carry = 0;
        for (int i = s1.length()-1; i >= 0; i--) {
            int a = Character.digit(s1.charAt(i), 10),
                b = Character.digit(s2.charAt(i), 10),
                c = carry,
                d = (a+b+c)%10,
                e = (a+b+c)/10;
            result[i] = Character.forDigit(d, 10);
            carry = e;
        }
        if (carry > 0)
            return carry + new String(result);
        return new String(result);
    }

    public static void main(String[] args) {
        System.out.println(add("999999","123456"));
    }
```

Ist wegen der String konkatenation nicht so dolle.

Besser nur mit char[]-Array oder noch besser nur mit int , Division, Multiplikation, Addition und Modulo.


----------



## steeeeel (5. Dez 2012)

KranzKrone hat gesagt.:


> Man kann auch die Zahlen alle in ein Array schrieben und dann ganz komplex mit einem zweiten Array. Das ganze ist so blödsinnig, weil in Java der String und int nix weiter als Objekte von CharSequenzen sind und somit wiederum auch nur Arrays in einem Computerspeicher.
> 
> Aber mit einer Liste (oder auch zwei) könnte man so rechnen, ich frage mich allerdings warum? Man soll das Rad nicht zweimal erfinden.



Aus Spaß mach ich das nicht ... Aufgaben im Informatik Studium .... was mod und div sind ist mir bewusst auf diese weise kannst du die Ziffernfolge um 1 stelle verkleinern... und mit den Ziffern einzeln weiterarbeiten... und wie gesagt soll das ganze OHNE String funktionieren....


----------



## tröööt (5. Dez 2012)

wenn die aufgabe in dem sinne von dir verlangt "schriftliches rechnen" nachzubasteln ... dir aber jegliche nutzung von "String" untersagt wirds schön aufwändig ... den einfach mal ein INT in ein Char-Array zerlegen ... weis gar nicht ob das so einfach ist (naja muss ja wohl .. denn auch String.valueOf() bzw Integer.toString() und Integer.parseString() müssen das ja auch irgendwie machen) ...

würde also mal in diese klassen gucken obs da im source nützliches an code gibt


----------



## Landei (6. Dez 2012)

Wie ich schon geschrieben hatte (Code von Grasstampfer aus dem von Marco verlinten Thread geklaut):


```
int i = (int)Math.log10( z ) + 1;
```

Ich glaube, kompakter geht es nicht


----------

