String in int konvertieren

Java Basics - Anfänger-Themen: String in int konvertieren

Fragen ausschließlich zu Java-Grundlagen von Ein- und Umsteigern
  1. String in int konvertieren #1
    Booty

    String in int konvertieren - Standard String in int konvertieren
    Hallo,
    Ich versuche mich gerade daran einen String in einzelne int-werte zu konvertieren, jedoch komme ich nicht so recht weiter.
    Was passieren soll, ist, dass ein Datum in der Form TT.MM.JJJJ also zB 31.01.2007 eingegeben werden soll und der dazugehörige Wochentag ausgegeben werden soll. Die Berechnung des Tages steht alles. Wenn ich die werte von Tag Monat und Jahr einzeln eingebe und direkt als int-werte speichere klappt auch alles. ich scheitere nur daran, dass die Eingabe des Datums komplett in einem Schritt erfolgt und die TT, MM und JJJJ Werte in int-werte konvertiert werden.
    Folgendes ist mein Lösungansatz:

    Code:
    String TT = "TT";
    String MM = "MM";
    String JJJJ = "JJJJ";
    	String Datum = IOTools.readString("Bitte geben sie ein gueltiges Datum in der Form "+TT+"."+MM+"."+JJJJ+"ein:");
    	
    	int rTag = Integer.parseInt(String TT);
    	int rMonat = Integer.parseInt(String MM);
    	int rJahr = Integer.parseInt(String JJJJ);
    Wenn ihr mir auf die Spünge helfen könnten wär das klasse,
    MfG
    Booty

  2. String in int konvertieren #2
    nocxsville


    Code:
    final String eingabe = [...]  // eingabe ist der von der console eingelesene String im Format TT.MM.JJJJ
    
    final int rTag = Integer.parseInt(eingabe.substring(0, 2));
    ggf. nochmal den Start- und Endindex überprüfen. Das gleich musst du dann für den Monat bzw. Jahr tun.

    P.S.: falls ungültige Zeichen eingegeben wurden (Buchstaben) wird eine NumberFormatException geworfen, die sollte man auch abfangen.

    Gruß,
    nocxsville.

  3. String in int konvertieren #3
    FatFire


    Hmpf, ich glaube, ich muß mal meine Signatur ändern...schon das zweite Mal, daß ich jetzt Code poste...
    Code:
    String eingabe = //halt das Datum, welches Du brauchst
    String teil = eingabe.substring(0 , eingabe.indexOf("."));
    int tag = Integer.parseInt(teil);
    eingabe = eingabe.substring(eingabe.indexOf(".") + 1);
    teil = eingabe.substring(0 , eingabe.indexOf("."));
    int monat = Integer.parseInt(teil);
    int jahr = Integer.parseInt(eingabe.substring(eingabe.indexOf(".") + 1));
    Also, erstens ist das jetzt so komplett, hast jetzt das Ergebnis in den Variablen tag, monat, jahr liegen und damit bist Du auch auf der sicheren Seite, falls irgendein Scherzkeks halt nicht 01.02.2007 eingibt, sondern 1.2.2007 (hmmm...so abwegig ist das gar nicht)...

  4. String in int konvertieren #4
    Booty

    Hallo ihr zwei.
    Erstmal ein großes Dankeschön an euch beide für eure Hilfe. Hat mir schon sehr geholfen!
    Ich poste euch jetzt nochmal meinen Code, denn es gibt da noch ein kleines Problem:
    Code:
      public static void main(String[] args) {
    String TT = "TT";
    String MM = "MM";
    String JJJJ = "JJJJ";
    	String Datum = IOTools.readString("Bitte geben sie ein gueltiges Datum in der Form "+TT+"."+MM+"."+JJJJ+" ein:");
    	String teil = Datum.substring(0 , Datum.indexOf(".")); 
    	
    	int rTag = Integer.parseInt(teil); 
    Datum = Datum.substring(Datum.indexOf(".") + 1); 
    teil = Datum.substring(0 , Datum.indexOf(".")); 
    int rMonat = Integer.parseInt(teil); 
    int rJahr = Integer.parseInt(Datum.substring(Datum.indexOf(".") + 1));
    
    	
        Tag tag = new Tag(rTag, rMonat, rJahr);
     
    	System.out.println ("Der " +rTag+"."+rMonat+"."+rJahr+ " ist ein " +tag.getWochentag());
    Das Problem was noch besteht ist, dass er keine Daten der Form 1.2.2007 (also ohne die Nullen) akzeptieren soll.^^
    Dafür müsste ich dann noch eine exception schreiben...aber wie veranker ich das in dem Code, dass er die Daten ohne die Nullen garnicht erst akzeptier?

    MfG Booty

  5. String in int konvertieren #5
    Leroy42


    Am einfachsten, indem du die Länge prüfst:
    Code:
    "1.2.2007".length() == 8
    Code:
    "01.02.2007".length() == 10

  6. String in int konvertieren #6
    Marco13


    For every difficult problem, there is a solution that ist simple, elegant .... and wrong. [Woher auch immer dieses Zitat stammt]

    Ein Prüfen der Länge in dieser Form bringt erstmal nicht viel
    "123.1.2007".length() == 10
    "laaliiluuu".length() == 10
    ...

    Eigentlich verwendet man zum parsen eines Datums ein DateFormat
    http://java.sun.com/j2se/1.4.2/docs/...ateFormat.html
    denn dafür ist das da.

    Aber wenn du das durch ein Zerlegen des Strings machen willst, um auf bestimmte Sachen "leichter" Einfluß nehmen oder genauer reagieren zu können, solltest du (zumindest) die Einzelteile der Strings prüfen (d.h. überprüfe, ob der Tag- und Monats-String-Teil die Länge 2 und der Jahres-String die Länge 4 haben).

    Es gibt dann aber immernoch viel, was schiefgehen kann. Geh' einfach mal davon aus, dass der Benutzer deines Programms ein Zufallsgenerator ist (und viele Benutzer SIND Zufallsgeneratoren)) und du immer richtig reagieren mußt, egal, welche Eingabe dort kommt....

  7. String in int konvertieren #7
    Leroy42


    Zitat Zitat von Marco13
    Ein Prüfen der Länge in dieser Form bringt erstmal nicht viel
    "123.1.2007".length() == 10
    "laaliiluuu".length() == 10
    Du hast den Thread wahrscheinlich nicht genau gelesen.

    Booty parst schon die entsprechenden Teilstrings, so daß deine
    beiden Beispiele schon beim Parsen als faule Eier erkannt würden.

    Die Längenabfrage ist nur als zusätzlicher Test (nach Boot's Nachfrage) zu verstehen.

    Dessen ungeachtet gebe ich dir natürlich vollkommen recht:
    Anstatt selbst rumzuwuseln würde ich natürlich auch gleich
    auf DateFormat zurückgreifen.

    ==> nocxsville hat den Thread in die falsche Richtung getrieben.

  8. String in int konvertieren #8
    FatFire


    Und ich hab ja auch noch fleissig mitgetrieben

  9. String in int konvertieren #9
    Marco13


    @Leroy42: Ich habe den Thread gestern Abend (->müde) überflogen, aber in bezug auf das letzte, was Booty gepostet hat:
    Code:
       String teil = Datum.substring(0 , Datum.indexOf("."));
       int rTag = Integer.parseInt(teil);
    dort wird zwar ein "teil" geparst, aber eine Überprüfung, ob z.B.
    Datum.indexOf(".") == -1
    teil.equals("murks") // (NumberFormatException)
    rTag > 31
    oder so gilt, wird dort bisher nicht gemacht (obwohl nocxsville zumindest auf die ersten beiden schon hingewiesen hatte!)

    Ob das mit dem DateFormat immer funktioniert, weiß ich aber gerade nicht: Wenn man sicherstellen will, dass einstellige Zahlen mit einer führenden "0" beginnen, könnte das mit einem DateFormat u.U. komplizierter sein, als wenn man von Hand parst (müßte man mal genauer nachsehen).

  10. String in int konvertieren #10
    Booty

    Rehi,
    Danke euch nochmal für die rege Beteiligung eurerseits.
    Bin jetzt fertig mit dem Programm und alles tut das was es soll
    Cya soon,
    Booty

  • Javavideokurs
    Videokurs
    Dein Weg zum Java-Profi!
    25 Stunden geballtes Java Know-How.

    Videokurs

  • Ähnliche Themen zu String in int konvertieren
    1. String in byte konvertieren, wie?
      Von prashanna im Forum Java Basics - Anfänger-Themen
      Antworten: 4
      Letzter Beitrag: 19.01.2013, 11:54
    2. int in String konvertieren
      Von aYlien im Forum Java Basics - Anfänger-Themen
      Antworten: 4
      Letzter Beitrag: 22.02.2011, 17:24
    3. von String auf int konvertieren
      Von Unkownsyntax im Forum Java Basics - Anfänger-Themen
      Antworten: 7
      Letzter Beitrag: 10.03.2009, 18:57
    4. String in Datum und wieder in String konvertieren
      Von schlumsch im Forum Java Basics - Anfänger-Themen
      Antworten: 3
      Letzter Beitrag: 03.01.2009, 12:42
    5. String zu int konvertieren ?
      Von phips.net im Forum Java Basics - Anfänger-Themen
      Antworten: 10
      Letzter Beitrag: 28.04.2005, 14:14
    Sie betrachten gerade String in int konvertieren