char to int in C und/oder Java

Diskutiere mit über: char to int in C und/oder Java im Mac OS X Entwickler, Programmierer Forum

  1. CapFuture

    CapFuture Thread Starter MacUser Mitglied

    Beiträge:
    1.777
    Zustimmungen:
    1
    Registriert seit:
    23.01.2004
    Moin allerseits :)

    Entweder bin ich dumm oder ich weiß nicht mehr weiter.

    Problem(Sprachunabhängig): Hab eine Zahlenfolge als String eingelesen und erfolgreich einer Methode/Prozedur übergeben. Will jetzt einzelne characters daraus rausnehmen(konvertieren in Int) und sie mit einigen mathematischen Operatoren bearbeiten.

    Problem(C): Ich hab den Char-Array übergeben, funktioniert prima. Auch strlen() gibt mir die länge des Strings an. Aber atoi(c) will net. Meckert ständig wegen fehlenden cast. Hab schon ein (int) vornedran geschmissen, hat aber nicht geholfen.

    Problem(Java): String erfolgreich mit nem Bufferreader eingelesen. Mit chatAt(i) bekomm ich auch mein Zeichen. Aber ich kann das verdammte Zeichen nicht in ein int konvertieren...

    Wäre nett wenn einer eine methode kennen würde... sonst muss ich (bedepperte) Methode schreiben und alle 10 Fälle abklappern...
     
  2. mithandir

    mithandir MacUser Mitglied

    Beiträge:
    54
    Zustimmungen:
    1
    Registriert seit:
    19.10.2004
    Java: Integer.parseInt("<string"> da muss nix mit BufferedReader oder sowas
     
  3. CapFuture

    CapFuture Thread Starter MacUser Mitglied

    Beiträge:
    1.777
    Zustimmungen:
    1
    Registriert seit:
    23.01.2004
    Habs schon probiert. Aber wie du ja selbst schreibst: Das Ding konvertiert einen STRING(!!!) in nen int. Bei char klappt das nicht... hab ich schon getestet... argh...
     
  4. stessi

    stessi Gast

    oja, geht schon!

    Integer.parseInt(""+bla.charAt(i));

    lg, stessi!
     
  5. stessi

    stessi Gast

    und wegen C Code, bitte gib mal deinen Code an, dann lässt sich der Fehler leichter finden, müsst nämlich so gehen und geht bei mir auch so.

    lg, stessi!
     
  6. CapFuture

    CapFuture Thread Starter MacUser Mitglied

    Beiträge:
    1.777
    Zustimmungen:
    1
    Registriert seit:
    23.01.2004
    Naja hab das problem in c zwar schon mit ner holzhammermethode gelöst, aber ich will gern wissen ob's besser geht...

    Code:
    int nachDezimal(char value[], int base){
      int length = strlen(value);
      int ergebnis = 0;
      int i;
      for(i=length-1;i>=0;i--){
        int val = atoi(value[i]); // Hier passiert der mist
        //warning: passing arg 1 of `atoi' makes pointer from integer without a cast
        if(val>=base){
          return -1;
        }
        ergebnis+=val*power(base,i);
      }
      return ergebnis;
    }
     
  7. current

    current MacUser Mitglied

    Beiträge:
    64
    Zustimmungen:
    1
    Registriert seit:
    02.10.2004
    in Java sollte so etwas gehen:

    Code:
    String zahl = "12345";
    
    for (int i = 0; i < zahl.length(); i++) {
        int ziffer = (int) (zahl.charAt(i) - '0');
        machIrgendwas(ziffer);
    }
    
     
  8. CapFuture

    CapFuture Thread Starter MacUser Mitglied

    Beiträge:
    1.777
    Zustimmungen:
    1
    Registriert seit:
    23.01.2004
    Hmm, wie ich's mir gedacht habe... Differenz der Unicodes nehmen... naja merk ich mir für's nächste Javaprogramm. Thx :)
     
  9. stessi

    stessi Gast

    @CapFuture:
    schau dir die Funktion atoi nochmal genauer an.

    int atoi(const char *nptr);

    fällt dir was auf?
    die warning sagts dir übrigens auch ganz genau.

    1 ... 2 ... 3 ... Zeit ist um, jetzt sag ichs dir.

    Du hast irrtümlicherweise als Argument nen Character und nicht wie von der Funktion verlangt einen Character Pointer.

    Jetzt geht die Funktion natürlich her und nimmt deinen Rückgabewert als Adresse.
    Da müsst einfach Schrott, wenn nicht ein Segmentation Fault oder sonstwas kommen.

    lg, stessi!

    P.S.: hast du meine Antwort bezüglich Java auch ausprobiert?
     
  10. mattmiksys

    mattmiksys MacUser Mitglied

    Beiträge:
    1.907
    Zustimmungen:
    61
    Registriert seit:
    04.06.2003
    Code:
    ...
        ergebnis=ergebnis * base + val;
    ...
    
    Noch nebenbei bemerkt: Dieser Weg ist eleganter (flotter), weil du dir die aufwändige power-Funktion ersparst. Sie wird nebenbei berechnet, indem Stelle für Stelle "nach links" eingeschoben wird (stimmt deine Indizierung?).

    Grüße,
    Matthias
     
Die Seite wird geladen...
Ähnliche Themen - char int oder Forum Datum
Anfängerproblem, Char aus String und diesen dann vergleichen.... Mac OS X Entwickler, Programmierer 28.12.2011
int main () und void main () [C++] Mac OS X Entwickler, Programmierer 18.12.2007
Int-Werte in ArrayList aufnehmen Mac OS X Entwickler, Programmierer 28.05.2007
int Variablen in Strings konvertieren / Java Mac OS X Entwickler, Programmierer 03.04.2007
c++: 'char' und Backslash.... Mac OS X Entwickler, Programmierer 02.09.2005

Diese Seite empfehlen

Benutzerdefinierte Suche