Ergebnis 1 bis 14 von 14

Thema: Java: 2 Fragen

  1. #1

    Java: 2 Fragen

    Ich muss für die Uni ein Programm in Java programmieren und bräuchte Rat zu 2 Fragen:

    1) Ich benutze einen Stack. Ich verwende die Stack.pop () - Methode in einem try-Block, dahinter steht:
    catch (EmptyStackException e) {
    //...
    }

    Beim Kompilieren erhalte ich jedoch immer den Fehler

    "cannot find symbol
    symbol : class EmptyStackException"

    Weiß jemand, was daran falsch sein soll?


    2) Muss ich (zumindest wie ich das Programm geplant habe) einen String einlesen und dann je nachdem, ob bestimmte Werte darin auftauchen, ihn in eine Integer umwandeln.
    Aber obwohl ich explizit caste, sagt er immer "inconvertible types". Weiß einer, ob und wie man Strings in Integers umwandeln kann, oder muss ich mir da was anderes überlegen?

    Schon mal vielen Dank im Voraus!

  2. #2
    Zu 1:
    Laut API-Doku (wenn du die nicht hast: unbedingt ziehen, das Teil ist genial) liegt die EmptyStackException in java.util. hast du die entsprechend importiert? Wenn nein, ersetz mal EmptyStackException mit java.util.EmptyStackException.

    Zu 2:
    kA, mit Typenumwandlung in Java hab ich mich nie befasst...

  3. #3
    Zu 2) Integer.parseInt(String)

  4. #4
    Erstmal danke für die schnelle Antwort!

    Importieren von java.util.* hat's gebracht, dachte eigentlich wenn ich java.util.Stack importier, sind die dazugehörigen Exceptions schon dabei, aber ich bin da auch eher neu.

    @ DFYX: Ebenfalls danke, allerdings klappt das nicht so richtig. Er findet die Methode nicht.
    Also: 1. Muss man die importieren?
    2. Wenn ich den String a (der nur aus ziffern besteht, also quasi schon eine Integer-Variable ist) auf die integer x übertragen will, wie schreibe ich das? "x = x.parsInt (a)"? Klingt komisch. Auch mit "x.parsInt (a)" alleine, oder "x = parsInt (a)" geht's nicht.

    Ein weiteres Danke im Voraus!

  5. #5
    int deinInt = Integer.parseInt(deinString);

  6. #6
    Code:
    x = Integer.parsInt(a);
    Genau das habe ich stehen (initialisiert habe ich x schon vorher), klappt aber nicht. Muss man das jetzt importieren, oder nicht?
    So sieht das aus:



    Auf jeden Fall danke.

    Edit: OMFJCIMP! Bin ich blöd! >_<

    OK, danke an alle! Hab's zwar noch nicht ausprobiert (bin nicht zuhause) aber das wird's wohl gewesen sein.

    PS: OK, klappt echt, wusste ich's doch, dass es das war!
    Das Ding kompiliert jetzt endlich, hat zwar falsche Ergebnisse, aber das ist wohl mein Problem...

    Geändert von drunken monkey (22.11.2005 um 11:59 Uhr)

  7. #7
    Les mal genau, was da steht: parseInt, nicht parsInt

  8. #8
    Ich würd dir zusätzlich raten, beim parseInt auf Exceptions zu achten, damit dein Programm nicht abstürzt, wenn du keinen Integer eingibst. Ist grundsätzlich ganz praktisch:

    Code:
    int i;
    try {
      i = parseInt(s);
    } catch (Exception e) {
      System.out.println("Not a number");
    }

  9. #9
    Oh, danke für den Tipp, aber
    a) hab ich das Programm schon abgegeben und
    b) hab ich's schon so gelöst:
    Code:
    lang = a.length ();
    
    for (i=0;i<lang;i++) {
    
        buchstabe = a.charAt (i);
        
        if ((zahlen.indexOf (buchstabe))==(-1)) {
            fehler=true;
            break;
        }
    Muss also eine Integer sein, aber danke.

    Geändert von drunken monkey (26.11.2005 um 14:59 Uhr)

  10. #10
    Warum einfach, wenns auch kompliziert geht . Aber halt das für die Zukunft im Hinterkopf, nicht nur, dass du überprüfst, ob der String richtige Zeichen hat, du überprüfst auch, ob die Zahl überhaupt in den Integer Wertebereich passt. Auch mit negativen Zahlen hast du kein Problem.

    Darüber hinaus ists schöner Code

  11. #11
    NEGATIVE ZAHLEN! Verdammt, ich wusste ich hab was vergessen. Danke für den Tipp, das wird wohl auch der Grund sein, warum ich nur 16/20 Punkten bekommen habe. MIST! >_<
    Danke schön!

    Naja, habe jetzt wieder ein kleineres Problem und eine eher unwichtige Frage, die mich aber trotzdem interessiert:

    1) Beim Kompilieren meines Programms kommt folgende Meldung:
    Was heißt das und wie kann ich es verhindern?

    2) Ich muss für die nächste Aufgabe (ja, wir kriegen JEDE Woche eine...) es unbedingt schaffen, ein Object )(also java.lang.Object)in eine Double-Variable zu verwandeln. Wollte ja eigentlich wieder den Tipp mit Double.parseDouble anwenden, aber das geht nur mit Strings, nicht mit einem Object. Daher habe ich das Object eben zuerst in einen String umgewandelt und dann in eine Double. Wollte fragen, ob es da nicht eine elegantere Lösung gäbe, die vielleicht auch weniger fehleranfällig o.ä. ist.

    Danke im Voraus!

  12. #12
    Nun mich muss zugeben, dass ich mich mit dem Typensystem von Java nicht sonderlich auskenne, jedoch könntest du versuchen dich ein wenig mit Reflection vertraut zu machen und herausfinden ob sich da etwas brauchbares finden lässt. Alternativ einfach wild drauf los casten und schauen obs klappt.

  13. #13
    Double.parseDouble ist schon gut so, du darfst allerdings nicht vergessen, dass _jedes_ Object in einen String verwandelt werden kann, indem du die richtige Methode aufrufst:

    Code:
    Double.parseDouble(o.toString());
    Verhindert auch, dass du ClassCastExceptions bekommst. Ist allerdings immer noch etwas unschön, vielleicht hilfts, wenn du mehr von der Angabe posten würdest, dann gibts vll. einen Trick, der dir da weiterhilft.

    Zwecks Punkt 1: Verwendest du JDK1.5? Wenn ja, dann ignorier das. Das ist nur eine Warnung, die dir angibt, dass du bei Stacks, etc. Generics verwenden sollst. Kompilier dein Programm einfach einmal auf dem JDK1.4 Compliance Level (mit -target 1.4, wenn ich mich nicht irre).

  14. #14
    ad ad 2: Wusste ich eh, genauso habe ich' ja auch gemacht. In einen String verwandeln und dann Double.parseDouble. Wenn's nicht schöner geht, kann man eben nichts machen.

    ad ad 1: Vielen Dank! Ich probier' es morgen mal aus und editier dann rein ob's geklappt hat.

    Edit: Passt!

    Geändert von drunken monkey (28.11.2005 um 17:25 Uhr)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •