Ich bin ein absoluter Neuling was Java angeht und quasi als Quereinsteiger ins erste Jahr in der Berufsschule mit Java begonnen. Ich mache eine Ausbildung als Anwendungsentwickler, habe aber im Betrieb nichts mit Java zu tun.
da ich jetzt erst ins Schuljahr starte sind mir meine Mitschüler natürlich etwas voraus, wir sind im moment beim Thema Exceptions und haben Fragen dazu bekommen die wir lösen sollen.
Ich hoffe ihr könnte mir ein bisschen Starthilfe geben ich habe wirklich gar keine Ahnung von Java und folgende AUfgabe vor mir:
"Schreiben Sie eine Methode, die 2 Integer Zahlen aus einer Datei einliest und die erste Zahl durch die zweite Zahl teilt. Der Dateinahme soll von der Konsole eingelesen werden. Machen Sie keine fehlerbehnadlung sondern leiten Sie die IO Exceptions einfach weiter. Was passiert, wenn die Datei nicht existiert?"
Und wie kann ich wie in der Aufgabe verlangt zwei Integer Zhalen aus einer Datei einlesen und die erste Zahl durch die zweite teilen?
Ich verstehe auch nicht wirklich was mit "Der Dateiname soll von der Konsole ausgelesen werden" gemeint ist.
Entweder du musst nach einen Dateinamen fragen und im über System.in lesen, oder er wird als Programmargument übergeben. Genau verstehe ich es auch nicht.
Der Vorgang ist ja allgemein nicht schwer:
Dateinamen besorgen (Argument oder System.in)
Inhalt lesen
Gelesenes auf Zahlen prüfen
String zu Int parsen
Zweite Zahl auf 0 überprüfen
Dividieren
Vermutlich ausgeben
Entweder du musst nach einen Dateinamen fragen und im über System.in lesen, oder er wird als Programmargument übergeben. Genau verstehe ich es auch nicht.
Der Vorgang ist ja allgemein nicht schwer:
Dateinamen besorgen (Argument oder System.in)
Inhalt lesen
Gelesenes auf Zahlen prüfen
String zu Int parsen
Zweite Zahl auf 0 überprüfen
Dividieren
Vermutlich ausgeben
Ja in der Theorie hört sich das toll an aber wie setzt man das in Java Syntax um?
Ich habe mal ausprobiert, Feedback und Hilfe sind gerne erwünscht!
Java:
publicclassDateieinfuegen{// Dies ist das Array, in das die Zahlen gespeichert werdenstaticString[][] array =newString[10][];publicstaticvoid main (String[] args){importFile();System.out.println("Kontrolle: ");printArray();
Warum ein 2D-Array? Zwar kannst du die beiden gelesen Zahlen in ein 1D-Array speichern, da du nur einzelne Zahlen und keine Zahlenpaare einliest. Da man aber immer nur 2 Zahlen auf einmal dividieren kann würde ich 2 einzelne Variablen vorziehen.
Den Dateinamen über das Argument zu bekommen ist ja nicht schwer, der wird der main sowieso übergeben. Du musst nur prüfen, ob überhaupt einer angegeben war.
Warum ein 2D-Array? Zwar kannst du die beiden gelesen Zahlen in ein 1D-Array speichern, da du nur einzelne Zahlen und keine Zahlenpaare einliest. Da man aber immer nur 2 Zahlen auf einmal dividieren kann würde ich 2 einzelne Variablen vorziehen.
Den Dateinamen über das Argument zu bekommen ist ja nicht schwer, der wird der main sowieso übergeben. Du musst nur prüfen, ob überhaupt einer angegeben war.
ich glaube ich muss weiter vorne anfangen, ich möchte jetzt erstmal 2 Zahlen aus einer Datei einlesen, wie funktioniert das denn genau mit der Pfadangabe bei Bluej, wo muss ich die Datei ablegen?
Ok, das mit der Datei einlesen hab ich mit Bluej hinbekommen, wie kann ich jetzt 2 Zahlen aus der Datei auslesen und diese Zahlen jeweils einer Variable übergeben?
In der Aufgabe steht, dass keine Fehlerbehandlung durchgeführt werden soll. Demnach würde ich auch nicht prüfen, sondern einfach den eingelesenen Text einer in Variablen zuweisen.
Schau dir dazu Integer.parseInt(String s) an.
In der Aufgabe steht, dass keine Fehlerbehandlung durchgeführt werden soll. Demnach würde ich auch nicht prüfen, sondern einfach den eingelesenen Text einer in Variablen zuweisen.
Schau dir dazu Integer.parseInt(String s) an.
Hier jetzt meine aktualisierte Version, stimmt das soweit?
Java:
importjava.io.*;importjava.util.LinkedList;classReadFile1{publicstaticvoidmain(String[] args)throwsIOException{FileReader fr =newFileReader("test.txt");BufferedReader br =newBufferedReader(fr);LinkedList<String> rows =newLinkedList<String>();String zeile1 = br.readLine();System.out.println(zeile1);String zeile2 = br.readLine();System.out.println(zeile2);
br.close();int sum =0;for(String row : rows){int number =0;try{
number =Integer.parseInt(row);}catch(NumberFormatException e){// Falls eine Zeile nicht nur eine Zahl beinhaltet ...
e.printStackTrace();System.err.println("Fehler: Eine Zeile hat ein fehlerhaftes Format!");// Das Programm deswegen nicht beenden, einfach die Zeile// überspringen/ignorierencontinue;}
sum += number;}}}
Ja eins nach dem anderen ich bin wie gesagt Anfänger.
Kannst du mir vielleicht an einem Beispiel erläutern wie ich einzelne Werte anstatt Listen einlesen kann, ich hab das leider nicht hinbekommen.
Über Anregungen wie ich die Zahlen teilen kann wäre ich ebenfalls dankbar!
Den Befehl dafür hast du ja schon: readLine().
Du ließt in deinem Beispiel ja auch schon die geforderten zwei Werte der Datei ein. Du musst die jetzt nur noch parsen und durcheinander teilen.
Mit Integer.parseInt kannst du Strings parsen, ja das passt.
Den Befehl dafür hast du ja schon: readLine().
Du ließt in deinem Beispiel ja auch schon die geforderten zwei Werte der Datei ein. Du musst die jetzt nur noch parsen und durcheinander teilen.
Kannst du mir vielleicht zeigen was ich genau machen muss ich komm einfach nicht weiter, ich weiss ja dass ich selbst ausprobieren muss um zu lernen aber ich häng grad:noe: