non-static method[...]from a static context

  • Hi also ich versuch grad mich mit den Eingabemöglichkeiten in Java rumzuspielen dabei hab ich in java.io readInt und die alles möglich Entdeckt das auch in der EprogIO vorkommt.

    Jetzt denk ich mir verwend ma halt mal das nur:

    Java-API

    soweit ok hab ich folgendes versucht:

    int x = DataInput.readInt();
    int x = DataInputStreamer();
    und imm kommt die Compilermeldung

    Zitat


    non-static method readInt() cannot be referenced from a static context
    int x = DataInputStream.readInt();

    Könnte mir da jemand aufklärung geben wie ich von meiner static Methode auf diese zugreifen kann? weil mein Büchlein hült sich darüber in schweigen.

  • ok habs jetzt es muss (im nachhinein klingts eh logisch) ein Inputstream angebegeben werden.

    also

    Code
    int x = new DataInputStream(System.in).readInt();


    Dazu hätt ich gleich noch eine Frage weil sich der Compiler beschwert das ich eine mögliche IOException abfangen muss. Das ist zwar nicht das Problem aber irgendwie bin ich verwundert das ich gezwungen werde die Exception abzufangen. Woher kommt das. ich meine bei zB den EPROG beispielen die ich gemacht hab hat mich der Compiler nicht gewarnt wenn ich eine mögliche auftretende EprogException nicht abgefangen hab.

  • mhm, ich glaube nicht alle methoden der eprog-klassen
    werfen exceptions - readword z.b. nicht, readint hingegen
    schon (wenn keine zahl eingegeben wurde). grundsätzlich
    mußt du in java alle exceptions die auftreten können
    abfangen, und sei es auch nur durch ein

    catch(Exception ex)

    daß dann alle exceptions (da alle von Exception erben)
    abfangen würde.

    einzige ausnahme sind die runtime-exceptions (dazu
    zählt u.a. die nullpointer- oder die arrayindexoutofbounds-
    exception). diese mußt du nicht explizit abfangen.

    mfg
    art

    "A nation that limits freedom in the name of security will have neither."
    - Thomas Jefferson, The United States of America's 3rd President

  • @Woher kommt das:
    Man hat die Moeglichkeit, in Methoden Exceptions zu werfen, wenn ein Fehler auftritt, den man selber nicht behandeln kann (z.B. wenn bei readInt kein int eingegeben wurde sondern ein string). Es waere ja bloed, wenn readInt da selbst z.B "no int" ausgeben wuerde, weil koennte ja sein, dass man diesen Fehler in der aufrufenden Methode anders behandeln will (z.B. durch einen Stromschlag, den der User bekommt *g*). Deshalb wirft readInt eine Exception, die Du abfangen und behandeln musst.
    Es gibt auch die Moeglichkeit, diese Exception weiterzureichen. Aber spaetestens die letzte Methode (main) muss eine Exceptionbehandlung machen.

  • Zitat

    Aber spaetestens die letzte Methode (main) muss eine Exceptionbehandlung machen.

    is nicht mal notwendig - auch die main-methode kann
    munter weiterwerfen wenns gewünscht is.

    "A nation that limits freedom in the name of security will have neither."
    - Thomas Jefferson, The United States of America's 3rd President

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!