# Strings umwandeln in Zahlen



## Enorion (10. Dez 2017)

Hallo, 
ich hänge schon sehr lang an folgender Aufgabe und verstehe einfach nicht, wie es weitergehen soll. Wäre deshalb dankbar wenn mir jemand einen Denkanstoß geben könnte, Tipps für die Vorgehensweise.

Was ich auch gerne Wissen würde, ob ich bis hier hin das ganze überhaupt richtig angegangen bin? Leider kommt beim Evaluieren noch nichts zu stande woran ich das sehen könnte.

Aufgabe: (vorgegebene main-Methode)

Schreiben Sie eine Funktion “static static int myParseInt(String s)”, die
genau das tut, was Sie bereits von Integer.parseInt(String) kennen—jedoch ohne
letzteres dabei zu verwenden oder zu kopieren: Sie wandeln also die Zeichen aus dem String
in eine int um.
Dabei soll der String s nur die Dezimalziffern ‘0’ bis ‘9’ und evtl. ein Vorzeichen ‘-’
am Beginn enthalten. Die einzelnen Zeichen aus s können Sie mit der Methode charAt
extrahieren.
Ist s fehlerhaft aufgebaut (etwa mit mehreren Vorzeichen oder zusätzlichen Zeichen oder
auch der leere String), soll die Zahl 0 zurückgegeben werden und zusätzlich die globale
boolean-Variable error auf true gesetzt werden.
Passt der entstehende Wert nicht in eine int-Variable, so soll die Zahl 1 zurückgegeben
werden und zusätzlich ebenfalls error auf true gesetzt werden.
Hinweise:
Die Dezimalziffern kommen bei char direkt hintereinander vor; welchenWert hat dann
c - ’0’ ?
Das Vorzeichen können Sie durch eine Multiplikation mit -1 oder mit 1 behandeln.
Bereichsüberschreitungen können Sie durch Division durch 10 und Rest modulo 10
erkennen.
Denken Sie auch an die Zahl -2147483648: Hier ist positive Version 2147483648 keine int!


Code

```
import java.util.Scanner;

public class Uebung08_A2 {

    static boolean error;
/* Loesung ab hier */

    static int myParseInt(String s){
        int lett = 0;
       
        for(int i=0; i <= s.length() - 1; i++){
        lett = lett + s.charAt(i);
           
        }
//        public int charAt(int index)
       
       
        return lett ; //falsch...
    }
   
   
   
/* Loesung bis hierhin */

  public static void main(String[] args) {

    Scanner sc = new Scanner(System.in);
   
    System.out.print("Teststring: ");
    String ts = sc.nextLine();
   
    error = false;
   
    int result = myParseInt(ts);
   
    if ( error )
        System.out.println ("Umwandlungsfehler "+ result);
    else
        System.out.println ("Umwandlungsresultat "+ result);
    }
}
```


----------



## Enorion (10. Dez 2017)

Also relevant ist nur oben die Methode. Mein Gedankengang soweit:

Die einzelnen Zeichen von 0 bis Länge-1, durch eine Schleife anzeigen und durch die Berechnung

lett = lett + s.charAt(i);
wird der einzelne char wegen Whitening in eine Int umgewandelt (lett wurde vorher als int deklariert).
ist das soweit überhaupt richtig? Kompilierbar ist es jedenfalls^^.
EDIT: Nun, eigentlich würde ich doch mit diesem Befehl die einzelnen Char umwandeln, jedoch mit dem vorherigen Wert Addieren? Also kommt doch etwas total falsches raus. Überlege mir parallel gerade eine andere Lösung..



Sobald ich  diese Umrechnung erfolgreich implementiert habe, besteht doch der Rest der Aufgabe darin die Bedingungen zu implementieren?

Wie ist folgender Satz zu verstehen:

Die Dezimalziffern kommen bei char direkt hintereinander vor; welchenWert hat dann
c - ’0’ ?


A = 0, B = 1, C= 2?
vllt auch C = 2 + die '0' ? Also 20?

Komm mir etwas Blöd vor, weil ich diesen Satz nicht verstehe^^


----------



## krgewb (10. Dez 2017)

Hier gibt es eine ASCII-Tabelle: http://www.chip.de/news/ASCII-Tabelle-Alle-ASCII-Codes-im-ueberblick-51205777.html
'0' = 48
'1' = 49
..
'9' = 57
...
'A' = 65
'B' = 66
...
'Z' = 90
...
'a' = 97
'b' = 98
...
'z' = 122


----------

