Java IO-classen nicht erkannt?

  • Ich möchte, lt. Beschreibung-Java Buch "Sprechen Sie Java - Einführung in das systematische Programmieren", mein Programm in einem Editor schreiben und mit der Eingabeaufforderung compilieren und ausführen.

    Zum Buch gibt es eigene IO-classen, welche im selben Verzeichnis abgelegt sind in dem auch die zu comilierenden *.java Dateien liegen (soll lt. Beschreibung so sein).

    In der cmd bekomme ich aber immer Fehlermeldungen. Ich denke, dass die IO-classen nicht erkannt werden.

    Bitte um Hilfe, ich kenne mich wirklich nicht mehr aus!


    cmd:[indent]Microsoft Windows 2000 [Version 5.00.2195]
    (C) Copyright 1985-2000 Microsoft Corp.
    C:\Dokumente und Einstellungen\Administrator>cd c:\java

    C:\Java>dir
    Datenträger in Laufwerk C: hat keine Bezeichnung.
    Datenträgernummer: 44AF-46BC

    Verzeichnis von C:\Java

    12.03.2004 11:03 <DIR> .
    12.03.2004 11:03 <DIR> ..
    12.03.2004 10:27 168 anyone.java
    12.03.2004 11:02 261 HelloWorldApp.java
    06.02.2004 07:46 4.000 In.class
    06.02.2004 07:09 10.226 In.java
    04.03.2004 17:50 <DIR> Neuer Ordner
    06.02.2004 07:09 2.080 Out.class
    06.02.2004 07:09 3.727 Out.java
    6 Datei(en) 20.462 Bytes
    3 Verzeichnis(se), 26.470.354.944 Bytes frei

    C:\Java>javac anyone.java
    anyone.java:4: cannot resolve symbol
    symbol : variable Out
    location: class anyone
    Out.print("Typ a number: ");
    ^
    anyone.java:6: cannot resolve symbol
    symbol : variable In
    location: class anyone
    i=In.readInt();
    ..^
    anyone.java:9: cannot resolve symbol
    symbol : variable Out
    location: class anyone
    Out.println(i);
    ^
    3 errors

    C:\Java>



    [/indent]

  • Post mal den Code von anyone.java dann gehts vielleicht besser den Fehler zu finden.

    :thumb: Geschrieben nach der alten, neuen und zukünftigen Rechtschreibung! :thumb:

  • Also der Inhalt von anyone.java ist äußerst simpel.:D

    class anyone {
    public static void main(String[] args) {
    int i;
    Out.print("Typ a number: ");

    i=In.readInt();
    i=++i;
    i=i++;
    Out.println(i);

    }
    }

    Ich möchte damit herausfinden ob es stimmt dass x++ und ++x wiklich die selbe Funktion haben, wenn man Sie als einzelne Zuweisung verwendet.

    Im Eclipse funktioniert es nämlich nicht (x++ hat keine Wirkung, wärend ++x funktioniert).

    Die selben Fehlermeldungen erhalte ich bei jedem Programm welches diese IO-classen verwendet.
    Verwende ich die Standard-classen von Java funktioniert alles normal.


    Versuch mal
    Code:
    javac -classpath "c:\java" anyone.java
    Danke Sysmaniak, war 'n volltreffer.

    Das trage ich warscheinlich jetzt unter den Umgebungsvariablen unter Classpath nach oder liege ich falsch?

  • Zitat

    Das trage ich warscheinlich jetzt unter den Umgebungsvariablen unter Classpath nach


    ja .

    Otto: Apes don't read philosophy. - Wanda: Yes they do, Otto, they just don't understand
    Beleidigungen sind Argumente jener, die über keine Argumente verfügen.
    «Signanz braucht keine Worte.» | «Signanz gibts nur im Traum.» 

    Das neue MTB-Projekt (PO, Wiki, Mitschriften, Ausarbeitungen, Folien, ...) ist online
    http://mtb-projekt.at

  • hi,

    ich glaube, du hast diesen ++ operator falsch verstanden. der erhöht nämlich die angegebene variable von selbst, die zuweisung dabei ist unnötig. ob du ++i; oder i++; als einzelnes statement ausführst, ist egal.
    bei "i=++i" sieht die sache so aus, dass i zuerst erhöht wird, der neue wert wird dann noch einmal an i zugewiesen (sinnlos), wobei hingegen bei "i=i++" i erst nach dem auslesen inkrementiert wird. dabei wird allerdings durch die zuweisung der inkrementierte wert wieder durch den originalwert überschrieben (also es ändert sich nichts).

    hi, i'm a signature virus. copy me into your signature to help me spread.

  • Zuerst einmal Danke für eure Hilfe, ihr habt mir sehr geholfen.:thumb:

    Eine letzte Frage habe ich noch zum Punkt classpath.

    Zitat von Wings-of-Glory


    Quote:
    Das trage ich warscheinlich jetzt unter den Umgebungsvariablen unter Classpath nach.

    ja .

    Wenn ich diesen Eintrag in den Umgebungsvariablen mache hat sich das Problem für dieses Verzeichnis erledigt. Lt. Buch sollten die classen immer erkannt werden, wenn sie sich im selben Verzeichnis befinden wo die zu compilierende Datei liegt.
    Kann man das auch irgenwo festlegen? :confused:

  • ich kenne keine Klasse namens java.io.Out oder java.io.In... Vielleicht meinst du java.lang.System.out und java.lang.System.in?

    [font=verdana,sans-serif]"An über-programmer is likely to be someone who stares quietly into space and then says 'Hmm. I think I've seen something like this before.'" -- John D. Cock[/font]

    opentu.net - freier, unzensierter Informationsaustausch via IRC-Channel!
    Hilfe und Support in Studienangelegenheiten, gemütliches Beisammensein, von und mit Leuten aus dem Informatik-Forum!

  • ahso. jar-file in ${JAVA_HOME}/lib/ext schmeißen, und dann mittels import einbinden sollte alles sein, was notwendig ist.

    [font=verdana,sans-serif]"An über-programmer is likely to be someone who stares quietly into space and then says 'Hmm. I think I've seen something like this before.'" -- John D. Cock[/font]

    opentu.net - freier, unzensierter Informationsaustausch via IRC-Channel!
    Hilfe und Support in Studienangelegenheiten, gemütliches Beisammensein, von und mit Leuten aus dem Informatik-Forum!

  • Zitat von hal

    ahso. jar-file in ${JAVA_HOME}/lib/ext schmeißen, und dann mittels import einbinden sollte alles sein, was notwendig ist.

    Ich habe nur .java und .class Dateien, wie komme ich jetzt zu .jar?

    Ich verwende J2EE von Sun, könnte da der Pfad so aussehen?
    ${Sun}\AppServer\jdk\jre\lib\ext

    Java Home würde ich so intrpretieren, dass das Verzeichnis auch den Ordner \bin mit der Java.exe enthält und dieser befindet sich im \jre und im \jdk Verzeichnis.
    Im \jdk Verzeichnis habe ich zwar auch einen \lib Ordner der hat aber ein \ext Verzeichnis.

  • ich sprech vom jar-file von dem Buch. Falls das auch alles class-files sind, musst du die nur in das Verzeichnis, wo dein source-file ist, dazuschmeißen (und dann ist import auch net notwendig).

    [font=verdana,sans-serif]"An über-programmer is likely to be someone who stares quietly into space and then says 'Hmm. I think I've seen something like this before.'" -- John D. Cock[/font]

    opentu.net - freier, unzensierter Informationsaustausch via IRC-Channel!
    Hilfe und Support in Studienangelegenheiten, gemütliches Beisammensein, von und mit Leuten aus dem Informatik-Forum!

  • Und da sind wir auch schon wieder am Anfang, denn die .class und .java IO.Dateien liegen im Verzeichnis. Jedoch muß ich im Pfad immer den Zusatz -classpath angeben, weil die classen nicht von alleine erkannt werden.

  • check: im File Out.java steht oben class Out { und kein package-befehl? . ist immer implizit im classpath.

    [font=verdana,sans-serif]"An über-programmer is likely to be someone who stares quietly into space and then says 'Hmm. I think I've seen something like this before.'" -- John D. Cock[/font]

    opentu.net - freier, unzensierter Informationsaustausch via IRC-Channel!
    Hilfe und Support in Studienangelegenheiten, gemütliches Beisammensein, von und mit Leuten aus dem Informatik-Forum!

  • nur kurze frage nebenbei...
    wozu brauchst du diese komischen Klassen?
    der dokumentation der klassen nach zu urteilen, gibts diese funktionen eigentlich eh schon in java.

    Otto: Apes don't read philosophy. - Wanda: Yes they do, Otto, they just don't understand
    Beleidigungen sind Argumente jener, die über keine Argumente verfügen.
    «Signanz braucht keine Worte.» | «Signanz gibts nur im Traum.» 

    Das neue MTB-Projekt (PO, Wiki, Mitschriften, Ausarbeitungen, Folien, ...) ist online
    http://mtb-projekt.at

  • wog: Warum hat EPROG seine eigenen Ausgabeklassen, warum verwendet R. Stevens: Unix Network Programming seine eigenen Netzwerkfunktionen? Ich glaub das hat einfach irgendwas mit einem ego-Trip zu tun.

    smo: wenn diese Dinge zutreffen, die ich gefragt hab, sollte es keine Probleme geben.

    [font=verdana,sans-serif]"An über-programmer is likely to be someone who stares quietly into space and then says 'Hmm. I think I've seen something like this before.'" -- John D. Cock[/font]

    opentu.net - freier, unzensierter Informationsaustausch via IRC-Channel!
    Hilfe und Support in Studienangelegenheiten, gemütliches Beisammensein, von und mit Leuten aus dem Informatik-Forum!

  • Um die Übungen aus dem Buch machen zu können die ja auf diesen classen aufgebaut sind, ohne die komplette architektur von Java in 3 Wochen können zu müssen.

    So siehts aus mit den classen vom Buch:
    public class SecToTime {

    public static void main(String[] args) {

    int e; //character input stream
    int d=0; //Days
    byte h=0; //Hours
    byte m=0; //Minutes
    byte s=0; //Seconds


    Out.print("Type a number: "); //output on the screen
    e=In.readInt();
    s= (byte)(e%60); //calculate number of secondes
    m= (byte)((e-s)/60%60); //calculate number of minutes
    h= (byte)((e-s-m*60)/60/60%24); //calculate number of hours
    d= ((e-s-m*60)/60/60/24);

    System.out.println("Time: "+e+"sec = " +d+"days "+h+"hrs. "+m+"min. "+s+"sec."); //outprint of results
    }
    }



    So sieht es aus wenn es richtig(?) ist:

    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.BufferedReader;
    public class SecToTime {
    public static void main(String[] args) {

    int e; //character input stream
    int d=0; //Days
    byte h=0; //Hours
    byte m=0; //Minutes
    byte s=0; //Seconds


    System.out.print("Type a number: "); //output on the screen
    InputStreamReader isr= new InputStreamReader(System.in);
    BufferedReader br = new BufferedReader(isr);
    try{

    String sData = br.readLine();

    e= Integer.valueOf(sData); intValue();
    s= (byte)(e%60); //calculate number of secondes
    m= (byte)((e-s)/60%60); //calculate number of minutes
    h= (byte)((e-s-m*60)/60/60%24); //calculate number of hours
    d= ((e-s-m*60)/60/60/24);

    System.out.println("Time: "+e+"sec = " +d+"days "+h+"hrs. "+m+"min. "+s+"sec."); //outprint of results
    }
    catch(IOException e1){
    }
    }
    }

  • Zitat

    check: im File Out.java steht oben class Out { und kein package-befehl? . ist immer implizit im classpath.

    seit diesem statement kann ich dir nicht mehr folgen.
    Was heißt das?

    Diese eigenen classen sollen das lernen unterstützen, weil man nicht alle eingaben machen muß die wirklich notwendig währen.
    Dadurch kann man sich auf den primären Teil konzentrieren um diesen zu verstehen.

Jetzt mitmachen!

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