• Hey,

    ich lerne gerade Java, und ich weiß grad nicht ob dieses Fehler nur bei mir ist, oder generell?

    z.B "Out.Print();"
    wenn ich das im Editor eingebe und später über die eingabeaufforderung mit javac compilen will, kommt der eine fehlermeldung:

    MyProg.java:7: error: cannot find symbol
    Out.printIn("blabla");
    ^
    symbol: variable Out

    das ist genauso bei In.readInt...

    ich vermute dass das veraltet ist und durch was neues ersetzt wurde, oder bei meinem PC etwas fehlt/ nicht stimmt.

    Würde gerne wissen, ob es bei euch funktioniert, und bei meinem PC der fehler ist, oder generell verändert wurde.

    Danke in vorraus :)

  • Woher hast du das denn mit In und Out?

    Auf die Konsole schreiben kannst du mit System.out.println(), von System.in lesen geht am besten mit einem java.util.Scanner. Einfach die entsprechende Dokumentation konsultieren :)

  • Ich hab ein die alte zweite Ausgabe des Buches von Hanspeter Mössenböck "Sprechen Sie Java".

    das mit System.out.println() bin ich irgendwie schon draufgekommen.

    bei dem Scanner hab ich das von jemanden abgeschaut;

    import java.util.Scanner;
    blabla
    Scanner einlesen = new Scanner(System.in);

    und dann z.B int x = einlesen.nextInt();

    ist das eig sozusagen richtig?

  • Ich hab ein die alte zweite Ausgabe des Buches von Hanspeter Mössenböck "Sprechen Sie Java".

    Besuche mal die Webseite zu diesem Buch: http://www.ssw.uni-linz.ac.at/JavaBuch/
    Dort gibt's die Klassen In und Out zum Herunterladen.

    Ich halte es aber nicht für gut, wenn man solche Hilfsklassen verwendet. Zum einen ist der Umgang mit System.in und System.out nicht wirklich schwierig, sodass sich mir nicht wirklich erschließt, wozu man diese Klassen überhaupt braucht. Zum anderen lernt man nur den Umgang mit den Hilfsklassen und steht vor dem Problem, umlernen zu müssen, wenn man mal ein "richtiges" Programm schreibt.

    In der Lehrveranstaltung "Einführung in das Programmieren" (Eprog) an der TU Wien gab's mal eine ähnliche Hilfsklasse, genannt EprogIO. Sie war ebenfalls dafür verantwortlich, die Handhabung von System.in und System.out zu übernehmen. Mit dem Ergebnis, dass Eprog-Absolventen zunächst hilflos waren, wenn sie später mal nicht die EprogIO zur Verfügung hatten.

    ist das eig sozusagen richtig?

    Ja.

  • Besuche mal die Webseite zu diesem Buch: http://www.ssw.uni-linz.ac.at/JavaBuch/
    Dort gibt's die Klassen In und Out zum Herunterladen.

    Ja. Und selbige kopiert man entweder in das Verzeichnis des jeweiligen Programms (sollte für's erste genügen), oder in ein beliebiges Verzeichnis und setzt die Umgebungsvariable CLASSPATH dort hin.

    Zitat

    Ich halte es aber nicht für gut, wenn man solche Hilfsklassen verwendet. Zum einen ist der Umgang mit System.in und System.out nicht wirklich schwierig, sodass sich mir nicht wirklich erschließt, wozu man diese Klassen überhaupt braucht.

    Das sehe ich etwas anders. Gerade bei der Klasse System.in sollte man schon etwas über Exceptions Bescheid wissen und komfortabel ist selbige Klasse auch nicht. Zudem ermöglichen die beiden Klassen ein einfaches Lesen und Schreiben in eine Datei (ohne sich z.B. groß mit Objekten auseinander setzen zu müssen).

    Zitat

    Zum anderen lernt man nur den Umgang mit den Hilfsklassen und steht vor dem Problem, umlernen zu müssen, wenn man mal ein "richtiges" Programm schreibt.

    Und? Wenn man mal Programmieren kann, ist das kein Problem. Ist es ein Problem, ist man wohl sowieso noch etwas vom "richtige Programme schreiben" entfernt.

    Zitat

    In der Lehrveranstaltung "Einführung in das Programmieren" (Eprog) an der TU Wien gab's mal eine ähnliche Hilfsklasse, genannt EprogIO. Sie war ebenfalls dafür verantwortlich, die Handhabung von System.in und System.out zu übernehmen. Mit dem Ergebnis, dass Eprog-Absolventen zunächst hilflos waren, wenn sie später mal nicht die EprogIO zur Verfügung hatten.

    Eprog-Absolventen sind meist so oder so hilflos, das zeigt alleine schon, dass sie sich ohne eine solche Hilfsklasse nicht wirklich zurecht finden.
    Langer Rede kurzer Sinn:
    Für Einsteiger sind solche Klassen durchaus (sehr) sinnvoll, da man sich mehr auf das jeweilige Programm konzentrieren kann und sich nicht mit den Details der (dafür mächtigeren) Standard-IO Klassen herumschlagen muss. System.in kann man außerdem vergessen, wenn schon, dann java.util.Scanner.


  • Ich halte es aber nicht für gut, wenn man solche Hilfsklassen verwendet. Zum einen ist der Umgang mit System.in und System.out nicht wirklich schwierig, sodass sich mir nicht wirklich erschließt, wozu man diese Klassen überhaupt braucht. Zum anderen lernt man nur den Umgang mit den Hilfsklassen und steht vor dem Problem, umlernen zu müssen, wenn man mal ein "richtiges" Programm schreibt.

    Nur weil eine Lehrveranstaltung die Scanner Klasse zu Tode nudelt, heißt das noch lange nicht, dass man richtig programmieren kann.
    In meiner Einführungslehrveranstaltung in Klagenfurt haben wir von der ersten Sekunde an die in und out Klassen verwendet. Warum sollte man Sie auch nicht verwenden? Sie erleichtern den Umgang beim Einlesen ungemein und helfen gerade Neuanfängern mal die Grundzüge zu erlernen und einfache Programme zu schreiben. Wie es dann anders geht, kann man später noch immer lernen.
    Diese Rumeierei hier mit Scanner und ohne Eclipse am Anfang nervt schon tierisch ;)

  • [..] Warum sollte man Sie auch nicht verwenden? Sie erleichtern den Umgang beim Einlesen ungemein und helfen gerade Neuanfängern mal die Grundzüge zu erlernen und einfache Programme zu schreiben. [..]


    Die Verwendung solcher eigenen Hilfsklassen zum Einlesen und Ausgeben stammt aus einer Zeit vor Java 1.5, wo es den Scanner noch nicht gab, und man noch über Streams einlesen musste (BufferedReader, Integer.parseInt(), ..). Der Scanner ist ebenso einfach in der Handhabung, wie solche fremden Hilfsklassen, sauberer implementiert, und dazu ein "Bordmittel" von Java, von dem man sicher gehen kann, dass es immer zur Verfügung steht.

    Zitat

    Wie es dann anders geht, kann man später noch immer lernen.

    Kann man, aber die Praxis zeigt, dass man schwer ablegt, was man einmal gelernt hat: Ich kann mich noch an Studenten erinnern, die in fortgeschrittenen LVAs die EProgIO in ihre Programme einbanden, um einzulesen. Lernt man von Anfang an mit dem Scanner zu arbeiten, passiert das nicht.

    Zitat

    Diese Rumeierei hier mit Scanner und ohne Eclipse am Anfang nervt schon tierisch ;)


    Die Klasse Scanner kann nichts dafür, wie sie erklärt wird ;)

    Allgemein ist es zu bevorzugen, Sprachmittel zu verwenden, wenn diese angeboten werden (z. B. Scanner statt Hilfsklassen, java.util.Logging statt log4j, slf4j, ..). Verwendet man fremde Bibliotheken, dann sollte man gute Gründe dafür haben (MigLayout statt GridBagLayout, Joda statt Date oder Calendar).

  • Die Verwendung solcher eigenen Hilfsklassen zum Einlesen und Ausgeben stammt aus einer Zeit vor Java 1.5, wo es den Scanner noch nicht gab, und man noch über Streams einlesen musste (BufferedReader, Integer.parseInt(), ..).

    Ja, die waren damals praktisch unentbehrlich für Anfänger. Selbst für Fortgeschrittenere war System.in & Co. meist ein Graus.

    Zitat

    Der Scanner ist ebenso einfach in der Handhabung, wie solche fremden Hilfsklassen,

    Hmmm..., nein.
    Mit dem Scanner ist zwar alles deutlich leichter geworden, aber solche fremden Hilfsklassen können durchaus noch einfacher sein. Das liegt an mehreren Gründen: Keine Objekterzeugung notwendig, auf das notwendige eingeschränkte Funktionalität, kurz gehaltene Dokumentation, kein(e) imports, ...

    Zitat

    sauberer implementiert,

    Das bringt einem Programmieranfänger genau gar nichts.

    Zitat

    und dazu ein "Bordmittel" von Java, von dem man sicher gehen kann, dass es immer zur Verfügung steht.

    Das ist für einen Anfänger wohl auch kein wirkliches Kriterium.

    Zitat

    Kann man, aber die Praxis zeigt, dass man schwer ablegt, was man einmal gelernt hat: Ich kann mich noch an Studenten erinnern, die in fortgeschrittenen LVAs die EProgIO in ihre Programme einbanden, um einzulesen.

    Und? Solche Studenten erkennt man auch an anderen Unsinnigkeiten. Und wenn es reicht, spricht grundsätzlich nichts dagegen selbige Klassen zu verwenden. Abgesehen davon kann man jede Klasse falsch verwenden, das heißt aber nicht, dass diese Klassen an sich schon schlecht seien.

    Zitat

    Lernt man von Anfang an mit dem Scanner zu arbeiten, passiert das nicht.

    Deswegen werden aus diesen Studenten aber keine besseren Programmierer. Man verschleiert es bestenfalls etwas.

    Zitat

    Die Klasse Scanner kann nichts dafür, wie sie erklärt wird ;)

    Doch. Sie ist nicht speziell für Anfänger gedacht, sondern zielt eher auf Fortgeschrittene ab, die bequem Ein-/Ausgabe machen wollen.

    Zitat

    Allgemein ist es zu bevorzugen, Sprachmittel zu verwenden, wenn diese angeboten werden (z. B. Scanner statt Hilfsklassen, java.util.Logging statt log4j, slf4j, ..). Verwendet man fremde Bibliotheken, dann sollte man gute Gründe dafür haben (MigLayout statt GridBagLayout, Joda statt Date oder Calendar).

    Tja, und es gibt ja für solche Hilfsklassen (auch immer noch) einen Grund.

  • Mit dem Scanner ist zwar alles deutlich leichter geworden, aber solche fremden Hilfsklassen können durchaus noch einfacher sein. Das liegt an mehreren Gründen: Keine Objekterzeugung notwendig, auf das notwendige eingeschränkte Funktionalität, kurz gehaltene Dokumentation, kein(e) imports, ...


    Objekterzeugung und Import kann man gerade noch auswendig lernen. Oder lernt ein Anfänger alle Nuancen der Klassen- und Methodendeklaration? Kaum. Dass JavaSE-fremde Hilfsklassen die Verwendung nicht allgemein einsetzbarer Insellösungen propagieren, und seit der Klasse Scanner kaum bis keine Vorteile bieten, sind ausreichend Argumente gegen ihre Verwendung.

    Zitat

    Tja, und es gibt ja für solche Hilfsklassen (auch immer noch) einen Grund.


    Nur, wenn man des Klugscheißens wegen dürftige Argumente aneinander reiht. Ich habe noch den Student nicht getroffen, der den Scanner nach einer kurzen Erklärung nicht verwenden konnte.

    Einmal editiert, zuletzt von JohnFoo (30. Oktober 2011 um 21:30)

  • Objekterzeugung und Import kann man gerade noch auswendig lernen.

    Ja, aber warum sollte man das tun, wenn man es nicht muss?

    Zitat

    Oder lernt ein Anfänger alle Nuancen der Klassen- und Methodendeklaration? Kaum.

    Bei mir so wenig wie möglich. Aber man kann es natürlich auch anders machen.

    Zitat

    Dass JavaSE-fremde Hilfsklassen die Verwendung nicht allgemein einsetzbarer Insellösungen propagieren, und seit der Klasse Scanner kaum bis keine Vorteile bieten, sind ausreichend Argumente gegen ihre Verwendung.

    Sehe ich anders. "Allgemein einsetzbar" sind die Klassen für Programmieranfänger sehr wohl. Darüber hinaus nicht, aber über das Logging hinaus ist ja auch log4j nicht wirklich "allgemein einsetzbar", ... oder welche Nicht-JavaSE-"Hilfsklassen" sind über Ihren Einsatzzweck hinaus sinnvoll "allgemein einsetzbar"?

    Zitat

    Nur, wenn man des Klugscheißens wegen dürftige Argumente aneinander reiht.

    ??? Also wenn das eine Beleidigung sein sollte, dann akzeptiere ich Ihre fachliche Kapitulation, falls das aber ein Argument sein sollte, dann sollten Sie sich nicht über die Dürftigkeit meiner Argumente aufregen.

    Zitat

    Ich habe noch den Student nicht getroffen, der den Scanner nach einer kurzen Erklärung nicht verwenden konnte.

    Und? Habe ich etwas anderes behauptet? Ich finde es nur etwas übertrieben, umständlich und unnötig, weil nicht unbedingt für diese Zielgruppe gedacht.
    Jedenfalls fand ich es nie sinnvoll Programmieranfänger zu nötigen ein Scanner-Objekt (auch über Methoden hinweg) mitzuschleifen, deswegen mache ich es nicht und spare mir so einige Erklärungen.

Jetzt mitmachen!

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