In meinem Anfänger-Buch "Grundkurs Programmieren in Java" wird eine Benutzereingabe mit dem Tool "Prog1Tools.IOTools" realisiert.
Ich hab die auch schon heruntergeladen und auch schon in der Systemsteuerung hinzugefügt so wie hier beschrieben.
Allerdings kommt bei dem Programm:
Java:
importProg1Tools.IOTools.*;publicclass Übungen {publicstaticvoid main (String[] args){int i;
i = readInteger ("i = ");}}
Diese Meldung:
Code:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The method readInteger(String) is undefined for the type Übungen
at Übungen.main(Übungen.java:5)
Liegt das daran, dass ich ihm einen Integer liefere aber er einen String haben will?
importProg1Tools.IOTools;publicclassIOToolsTest{publicstaticvoid main (String[] args){int i, j, k;double d;char c;boolean b;// int-Eingabe ohne Prompt
i =IOTools.readInteger();
weil die Aufmerksamkeit von so vielen Leuten ja verdient ist nochmal ein Hinweis:
[c]import Prog1Tools.IOTools.*;[/c]
ungleich
[c]import Prog1Tools.IOTools;[/c]
importstaticProg1Tools.IOTools.*;publicclassIOToolsTestMitStaticImport{publicstaticvoid main (String[] args){int i, j, k;double d;char c;boolean b;
i =readInteger();System.out.print("j = ");
j = readInteger ();
k = readInteger ("k = ");
d = readDouble ("d = ");
c = readChar ("c = ");
b = readBoolean (" b = ");System.out.println("i = "+ i );System.out.println("j = "+ j );System.out.println("k = "+ k );System.out.println("d = "+ d );System.out.println("c = "+ c );System.out.println("b = "+ b );}}
Fehlermeldung:
Code:
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
The method readInteger() is undefined for the type IOToolsTestMitStaticImport
The method readInteger() is undefined for the type IOToolsTestMitStaticImport
The method readInteger(String) is undefined for the type IOToolsTestMitStaticImport
The method readDouble(String) is undefined for the type IOToolsTestMitStaticImport
The method readChar(String) is undefined for the type IOToolsTestMitStaticImport
The method readBoolean(String) is undefined for the type IOToolsTestMitStaticImport
at IOToolsTestMitStaticImport.main(IOToolsTestMitStaticImport.java:10)
funktioniert einfach nur
[c]System.out.print(Prog1Tools.IOTools.class);[/c]
?
(natürlich mit main-Methode usw., Import in diesem Fall nicht so wichtig)
* IOToolsInstallHilfe.html (Kurz-Dokumentation und Installationsanleitung, html-Datei)
* IOToolsInstallHilfe.pdf (Kurz-Dokumentation und Installationsanleitung, PDF-Datei)
* IOTools.html (API-Dokumentation bzw. Schnittstellenbeschreibung, html-Datei)
* IOTools.pdf (API-Dokumentation bzw. Schnittstellenbeschreibung, PDF-Datei)
* Prog1Tools.zip (Das Paket, das die IOTools enthält. Es muss nur auf den eigenen Rechner kopiert und NICHT entpackt werden)
* ToolsAndDocs.zip (die 5 zuvor genannten Dateien in einem Zip-File)
* Prog1Tools_src.zip (Die Java-Quellen zum Prog1Tools-Paket)
Download von Libraries und Einbindung ins Programm ist leider ziemlich schwierig (entgegen der zitierten Beschreibung),
schade dass viele Anfänger-Bücher sowas verlangen, vielleicht gehst du lieber zu diesem Buch: Galileo Computing :: Java ist auch eine Insel –
das wirst du hier im Forum sowieso oft genug hören
---
in Installationsanleitung.html habe ich noch reingeschaut, unter 2.6
2.6 Weiteres Vorgehen für spezielle Java-Editoren oder Java-Entwicklungsumgebungen (Die IOTools in Eclipse, Java-Editor, JOE, JBuilder etc.)
importstaticProg1Tools.IOTools.*;publicclassIOToolsTestMitStaticImport{publicstaticvoid main (String[] args){System.out.print(Prog1Tools.IOTools.class);}}
Meldung:
Java:
Exception in thread "main" java.lang.Error:Unresolved compilation problem:Prog1Tools cannot be resolved to a type
at IOToolsTestMitStaticImport.main(IOToolsTestMitStaticImport.java:5)
Stell dir vor, ich war vorgestern Bücher-Kaufen und da hab ich genau das Buch gesehen, wobei ich eigentlich ein ordnetliches Python Buch gesucht habe. Am Ende ist es dann ein C# Buch geworden ^^. Ich glaub ich bleib erst einmal bei dem...
Edit: Wie gesagt, ich hab es nach den aufgelisteten Installations-Anweisungen befolgt. Großeees EDIT:
Ich bin von NetBeans auf Eclipse umgestiegen
Da gestaltet sich das mit den Klassen wirklich einfacher. Dann noch die 7 Video-Tuts geguckt von der Reihe die ihr mir geschickt habt ( in einem anderen Beitrag ) und dann hat das soweit funktioniert! Danke nochmals...
meinst du 'in der Systemsteuerung hinzugefügt'?
verwendest du denn die Konsole (dann wäre das evtl. nützlich, kann man noch viel falsch machen)
oder eine IDE (dann bringt Systemsteuerung ziemlich wenig)
siehe auch edit in meinem letzten Posting
edit: geht es denn jetzt in Eclipse oder bezieht sich das Danke nur auf Eclipse, noch nicht auf das aktuelle Problem?
wäre ja recht schnelle Lösung
und hast du die Installationsanleitung zu Eclipse berücksichtigt?
Screenshots des Project Explorers/ der Konfiguration, wo immer du External JARs hinzugefügt hast, wären hilfreich
JARs werde ich nicht erklären, in der Anleitung steht
In Eclipse gehen Sie wie folgt vor:
[..] Mit der linken Maustaste auf den Button Edit drücken. Es erscheint ein Kontext-Menü. Dort den Button Add External JARs klicken und die Datei Prog1Tools.zip, also
c:\programme\java\other\Prog1Tools.zip
[..]
entweder du stellst dazu Fragen, machst das noch oder bist damit fertig und zeigst mehr oder weniger überzeugend die Ergebnisse (durch Text oder eher gleich Screenshots),
ansonsten nur mit 'ich habe alles richtig gemacht' gehts nunmal nicht weiter,
das ist einerseits allgemein wenig glaubhaft (sorry ), steht andererseits im Widerspruch zum Nicht-Funktionieren aktuell
das wäre gleich zwei Screenshots wert, einerseits WO du auf Edit klickst, andererseits was dann dort stattdessen zu sehen ist
(oder textuelle Beschreibung)
warum du in diesem Fall vorher
> Die Installationsanleitung für Eclipse hab ich berücksichtig, wobei es da nicht viel zu installieren gab.
schriebst könnte man auch noch diskutieren, oder eben nicht,
Screen kann ich von dem Edit-Menü nicht machen das klappt nämlich wieder zu sobald ich wo anders hinklicke.
Gibts noch ne andere Möglichkeit der Benutzereingabe wo ich keine externen Dings-Zeugs installieren muss? Oder wie macht ihr das? Ist schon blöd wenn ein Buch so einen kack macht...
kommt... da ist ja jeglicher Bedarf gedeckt Hilfestellungen zu geben.
Was nützt es dem 'Fragesteller' zu raten sich erstmal mit der Konsole, den Befehlen java, javac und dem Classpath, sowie packages auseinanderzusetzen, vielleicht noch erneut auf Galileo Computing :: Java ist auch eine Insel – zu verweisen? Von der FAQ hier im Forum mal gar nicht zu reden. Eigeninitiative ist ihm ein Fremdwort, eine Spur zu selbstbewusst, beratungsresistent und dreist. Möglicherweise der kommende Mann für den FDP-Vorstand aber sicher nicht mehr.
Hat keiner mehr eine Idee wie ich das Problem lösen könnte? Gibt es noch andere Eingabeaufforderungs-Methoden? Wo ich keinen externe Klasse installieren muss?
dafür ist das zweite Buch umsonst,
ich bin mir einerseits sicher, und zweierseits ist Programmeingabe sowieso langweilig/ umständlich,
du kannst alles direkt in den Quellcode eingeben und ein Programm neu laufen lassen
Was heißt das zweite Buch ist umsonst? Gibts das kostenlos?
Edit: Ich würde gerne einfach Java lernen. Unter einfach verstehe ich, wenn ich nichts dazu installieren muss, keine externen Klassen usw. Dann muss ich noch einmal 50 € hinblättern
Gibt es nicht doch eine andere Lösung für diese Eingabeaufforderung, also genau das gleiche wie die Prog1IOTools? Ich entschuldige mich noch einmal für die in kürzerer Vergangenheit aufgetretenen Unverschämtheiten meinerseits. Hoffentlich ist das Problem damit beseitigt?
Meine Güte! Der link zum Buch wurde Dir bereits mehrfach in diesem Thread angegeben :rtfm:. Warum klickst Du nicht einfach mal drauf und lässt Dich überraschen? Ich hoffe für Dich, dass Du dann verstehst was mit kostenlos gemeint ist.
alles aber auch wirklich alles steht dir offen, es gibt so viele Möglichkeiten dass man sich gar nicht entscheiden kann, nur schmollen ist schlecht
- das neue Buch ist kostenlos, man muss es nur lesen
- im Internet nach Programmen suchen 'eine Zahl in Java eingeben' und du bekommst hunderte Lösungen
- die Installation der Library des ersten Buches ist weiter möglich, du versuchst es nur nicht, oder hast bisher zumindest noch keine qualifizierte Frage dazu gestellt (die, die beweisen, dass du die Installationsanleitung quasi nicht gelesen hast, sind nicht sinnvoll..)
- auf der Seite des ersten Buches steht der Quellcode sogar zum Download bereit, du musst nichts kompliziert installieren, sondern einfach nur eine Klasse in einem package erstellen, das normalste, was man in Java machen kann
Java:
packageProg1Tools;importjava.io.*;importjava.util.*;importjava.math.*;/** Diese Klasse stellt einige einfache Methoden zum Einlesen von der Tastatur
zur Verfügung. Es werden diverse Werte von der Tastatur eingelesen, die
jeweils durch ein Leerzeichen, einen Tabstop oder ein Zeilenendezeichen
getrennt sein müssen.
@author Jens Scheffler
@version 1.01 Spezialfassung für <I>Programmieren 1 in Java</I>
*/publicclassIOTools{privateIOTools(){}// somit kann die Klasse nicht instanziiert werden!privatestaticBufferedReader in=newBufferedReader(newInputStreamReader(System.in));privatestaticStringTokenizer eingabe;privatestaticString zeichenkette;/** Löscht alles, was sich in der momentanen Zeile befindet.
Das heißt es wird der Eingabe bis zum Zeilenende keine Beachtung mehr
geschenkt
*/publicstaticvoidflush(){
eingabe=null;}/* Private Methode, die den Tokenizer fuellt. Dies ist uebrigens eine von
zwei Methoden, die die Klasse zum Absturz bringen kann...*/privatestaticvoidinit(){
zeichenkette=null;if(eingabe!=null&& eingabe.hasMoreTokens())return;while(eingabe==null||!eingabe.hasMoreTokens())
eingabe=newStringTokenizer(readLine());}/* Private Methode, die eine Fehlermeldung ausgibt */privatestaticvoiderror(Exception e,String prompt){System.out.println("Eingabefehler "+e);System.out.println("Bitte Eingabe wiederholen...");System.out.print(prompt);}/** Liest eine ganze Textzeile von der Tastatur ein. Soll vorher eine
Eingabeaufforderung gemacht werden, geschieht dies durch den Parameter.
Dieser kann jedoch auch wegfallen.
@param prompt eine eventuelle Eingabeaufforderung
@return die eingelesene Zeile.
*//* Dies ist die zweite Methode, die die Klasse zum Absturz bringen kann.*/publicstaticStringreadLine(String prompt){flush();String erg="";System.out.print(prompt);try{
erg=in.readLine();}catch(IOException e){System.err.println(""+e+"\n Programm abgebrochen...\n");System.exit(1);}if(erg==null){System.err.println("Dateiende erreicht.\nProgramm abgebrochen...\n");System.exit(1);}return erg;}/** Liest eine <CODE>int</CODE>-Zahl von der Tastatur ein. Soll vorher eine
Eingabeaufforderung gemacht werden, geschieht dies durch den Parameter.
Dieser kann jedoch auch wegfallen.
@param prompt eine eventuelle Eingabeaufforderung
@return die eingelesene Zahl.
*/publicstaticintreadInteger(String prompt){int erg;System.out.print(prompt);init();while(true){try{
erg=Integer.parseInt(eingabe.nextToken());}catch(NumberFormatException e){error(e,prompt);init();continue;}return erg;}}/** Liest eine <CODE>long</CODE>-Zahl von der Tastatur ein. Soll vorher eine
Eingabeaufforderung gemacht werden, geschieht dies durch den Parameter.
Dieser kann jedoch auch wegfallen.
@param prompt eine eventuelle Eingabeaufforderung
@return die eingelesene Zahl.
*/publicstaticlongreadLong(String prompt){long erg;System.out.print(prompt);init();while(true){try{
erg=Long.parseLong(eingabe.nextToken());}catch(NumberFormatException e){error(e,prompt);init();continue;}return erg;}}/** Liest eine <CODE>double</CODE>-Zahl von der Tastatur ein. Soll vorher eine
Eingabeaufforderung gemacht werden, geschieht dies durch den Parameter.
Dieser kann jedoch auch wegfallen.
@param prompt eine eventuelle Eingabeaufforderung
@return die eingelesene Zahl.
*/publicstaticdoublereadDouble(String prompt){double erg;System.out.print(prompt);init();while(true){try{
erg=Double.valueOf(eingabe.nextToken()).doubleValue();}catch(NumberFormatException e){error(e,prompt);init();continue;}return erg;}}/** Liest eine <CODE>float</CODE>-Zahl von der Tastatur ein. Soll vorher eine
Eingabeaufforderung gemacht werden, geschieht dies durch den Parameter.
Dieser kann jedoch auch wegfallen.
@param prompt eine eventuelle Eingabeaufforderung
@return die eingelesene Zahl.
*/publicstaticfloatreadFloat(String prompt){float erg;System.out.print(prompt);init();while(true){try{
erg=Float.valueOf(eingabe.nextToken()).floatValue();}catch(NumberFormatException e){error(e,prompt);init();continue;}return erg;}}/** Liest eine <CODE>short</CODE>-Zahl von der Tastatur ein. Soll vorher eine
Eingabeaufforderung gemacht werden, geschieht dies durch den Parameter.
Dieser kann jedoch auch wegfallen.
@param prompt eine eventuelle Eingabeaufforderung
@return die eingelesene Zahl.
*/publicstaticshortreadShort(String prompt){short erg;System.out.print(prompt);init();while(true){try{
erg=Short.valueOf(eingabe.nextToken()).shortValue();}catch(NumberFormatException e){error(e,prompt);init();continue;}return erg;}}/** Liest eine <CODE>byte</CODE>-Zahl von der Tastatur ein. Soll vorher eine
Eingabeaufforderung gemacht werden, geschieht dies durch den Parameter.
Dieser kann jedoch auch wegfallen.
@param prompt eine eventuelle Eingabeaufforderung
@return die eingelesene Zahl.
*/publicstaticbytereadByte(String prompt){byte erg;System.out.print(prompt);init();while(true){try{
erg=Byte.valueOf(eingabe.nextToken()).byteValue();}catch(NumberFormatException e){error(e,prompt);init();continue;}return erg;}}/** Liest einen boolschen Wert von der Tastatur ein. Soll vorher eine
Eingabeaufforderung gemacht werden, geschieht dies durch den Parameter.
Dieser kann jedoch auch wegfallen.
@param prompt eine eventuelle Eingabeaufforderung
@return der eingelesene Wert.
*/publicstaticbooleanreadBoolean(String prompt){String try_this=readString(prompt);while(!try_this.equals("true")&&!try_this.equals("false")){error(newNumberFormatException("For input string: \""+ try_this +"\""),prompt);
try_this=readString();}return try_this.equals("true");}/** Liest ein Textwort von der Tastatur ein. Soll vorher eine
Eingabeaufforderung gemacht werden, geschieht dies durch den Parameter.
Dieser kann jedoch auch wegfallen.
@param prompt eine eventuelle Eingabeaufforderung
@return das eingelesene Wort.
*/publicstaticStringreadString(String prompt){System.out.print(prompt);init();return eingabe.nextToken();}/** Liest ein Zeichen von der Tastatur ein. Soll vorher eine
Eingabeaufforderung gemacht werden, geschieht dies durch den Parameter.
Dieser kann jedoch auch wegfallen.
@param prompt eine eventuelle Eingabeaufforderung
@return das eingelesene Zeichen.
*/publicstaticcharreadChar(String prompt){String try_this=readString(prompt);while(!(try_this.length()==1)){error(newNumberFormatException("For input string: \""+ try_this +"\""),prompt);
try_this=readString();}return try_this.charAt(0);}/** Liest eine ganze Textzeile von der Tastatur ein.
@return die eingelesene Zeile.
*/publicstaticStringreadLine(){returnreadLine("");}/** Liest eine <CODE>int</CODE>-Zahl von der Tastqtur ein.
@return die eingelesene Zahl.
*/publicstaticintreadInteger(){returnreadInteger("");}/** Liest eine <CODE>int</CODE>-Zahl von der Tastqtur ein.
@return die eingelesene Zahl.
*/publicstaticintreadInt(){returnreadInteger("");}/** Liest eine <CODE>int</CODE>-Zahl von der Tastatur ein. Soll vorher eine
Eingabeaufforderung gemacht werden, geschieht dies durch den Parameter.
Dieser kann jedoch auch wegfallen.
@param prompt eine eventuelle Eingabeaufforderung
@return die eingelesene Zahl.
*/publicstaticintreadInt(String prompt){returnreadInteger(prompt);}/** Liest eine <CODE>long</CODE>-Zahl von der Tastatur ein.
@return die eingelesene Zahl.
*/publicstaticlongreadLong(){returnreadLong("");}/** Liest eine <CODE>double</CODE>-Zahl von der Tastatur ein.
@return die eingelesene Zahl.
*/publicstaticdoublereadDouble(){returnreadDouble("");}/** Liest eine <CODE>short</CODE>-Zahl von der Tastatur ein.
@return die eingelesene Zahl.
*/publicstaticshortreadShort(){returnreadShort("");}/** Liest eine <CODE>byte</CODE>-Zahl von der Tastatur ein.
@return die eingelesene Zahl.
*/publicstaticbytereadByte(){returnreadByte("");}/** Liest eine <CODE>float</CODE>-Zahl von der Tastatur ein.
@return die eingelesene Zahl.
*/publicstaticfloatreadFloat(){returnreadFloat("");}/** Liest ein Zeichen von der Tastatur ein.
@return das eingelesene Zeichen
*/publicstaticcharreadChar(){returnreadChar("");}/** Liest ein Textwort von der Tastatur ein.
@return das eingelesene Wort.
*/publicstaticStringreadString(){returnreadString("");}/** Liest einen boolschen Wert von der Tastatur ein.
@return das eingelesene Wort.
*/publicstaticbooleanreadBoolean(){returnreadBoolean("");}/** Wandelt eine double-Zahl in einen String um.
Bei der üblichen Umwandlung von double-Werten in einen String
findet eine Rundung statt. So wird etwa die Zahl 0.1, obwohl intern
nicht darstellbar, dennoch auf dem Bildschirm ausgegeben. Diese
Methode umgeht die Rundung */publicstaticStringtoString(double d){if(Double.isInfinite(d)||Double.isNaN(d))return""+d;return(newBigDecimal(d)).toString();}}
Doch, ist es. Recht weit oben links findest Du das Inhaltsverzeichnis. Du kannst Dir das Buch auch laden, an der Größe wirst Du dann sehen, dass es recht umfangreich ist.