# Strings vergleichen



## Halo1982 (18. Sep 2015)

Hallo liebe Community,

ich habe 2 Strings mit 23 Zeichen die allesamt Zahlen sind. Wie finde ich heraus welche Zahl größer/kleiner ist? Ich kenne bisher nur die .equal Methode, aber ich will ja nicht wissen ob es gleich ist. Ich wette/hoffe wenn man es weiß, ist die Antwort simple.


----------



## MWin123 (18. Sep 2015)

Dann wandel die beiden Strings doch in ints um.


----------



## Halo1982 (18. Sep 2015)

Das problem ist die größe....Int kann maximal 10 Stellen haben, long 19, ich brauche aber 23


----------



## CursedCookie (18. Sep 2015)

Versuchs mit bigdecimal


----------



## MWin123 (18. Sep 2015)

Halo1982 hat gesagt.:


> Das problem ist die größe....Int kann maximal 10 Stellen haben, long 19, ich brauche aber 23


Ok, dann halt BigInteger. 


```
import java.math.BigInteger;

public class CompareNumbers {

    public static void main(String[] args) {
        String firstNumber = "12345123451234512345123451234512345";
        String secondNumber = "497434234234243242";

        BigInteger a = new BigInteger(firstNumber);
        BigInteger b = new BigInteger(secondNumber);

        System.out.println(a.compareTo(b));
        System.out.println(b.compareTo(a));
    }
}
```


```
1
-1
```

1 = größer
0 = gleich
-1 = kleiner


----------



## fhoffmann (18. Sep 2015)

Wenn die Strings gleich lang sind (links mit Nullen aufgefüllt), sollte auch ein Vergleich der Strings ausreichen.


----------



## CursedCookie (18. Sep 2015)

Ein Vergleich der strings ist immer möglich,  einfach von links nach rechts durchgehen mit .charAt(int position), und dann die vergleichen...


----------



## Thallius (18. Sep 2015)

CursedCookie hat gesagt.:


> Ein Vergleich der strings ist immer möglich,  einfach von links nach rechts durchgehen mit .charAt(int position), und dann die vergleichen...



Falsch dann ist  "90" größer als "800"

Wenn man bliebig große Zahlen die auch nicht mehr in den BigInt reinpasst vergleich möchte, dann sollte man diese einfach in mehrere Teile teilen, bis man weniger als z.B. 8 Stellen hat.

123456789
3456123
578234676782346

in

0   1234             56789
0   34                 56123
57 82346767   82346

Und dann vergleicht man einfach von oben runter... also erst den resten string mit den drei anderen, wenn die gleich sind, dann die drei zweiten etc.

Gruß

Claus


----------



## strußi (18. Sep 2015)

du kannst ja mal anfangen und die länge der Strings vergleichen. das gibt dir schon mal den ersten anhaltspunkt. Dann schaust du nach den vorzeichen so kannst du alle unterschiedlich langen Strings erschlagen. Falls das nicht reicht mach es wie @CursedCookie vorschlägt und vergleiche die einzelnen Char im String von links nach rechst.


----------



## CursedCookie (18. Sep 2015)

@Thallius ich bin davon ausgegangen,  dass man im string Vergleich einfach die kleinere Zahl (string mit geringerer Länge)  als kleiner festlegen kann,  oder mit 0en links ausfüllt...


----------

