BlueJ Scanner kann file.dat nicht einlesen (file not found)

Letrix

Neues Mitglied
Ich bin ein sehr ungeübter Java-Anfänger und habe jetzt einige Zeit versucht, mein Programm zum laufen zubringen, jedoch ohne erfolg...

Ziel ist es einen Scanner zu benutzen, um eine Datei (in diesem Fall "Monat.dat") zu lesen und den Inhalt auszugeben. Jedoch bekomme ich entweder eine leere Konsole oder ich bekomme den fehler "File not found". Ich habe es bereits mit einem absoluten Pfad versucht, jedoch hat dies auch nicht funktioniert. Das Programm hat keine Syntaxfehler und die datei "Monat.dat" befindet sich im selben Projektordner wie die übrigen Datein des Programms.

Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.util.Scanner;
import java.io.*;
import java.nio.*;
import java.nio.file.*;

public class Temperaturen{

   
      public class Durchschnittstemperatur{
          String Monat; //Name des Monats
          double Grad; //Temperatur in C°
   
          Durchschnittstemperatur(String s, double d){
              Monat = s;
              Grad = d;
      }
   
      public void zeige(){
          System.out.println(" Der Monat "+Monat+" hat eine Durchschnittstemperatur von "+Grad+" C°");
      }
    }
   
    
    Temperaturen(){
        Durchschnittstemperatur s = new Durchschnittstemperatur ("", 0);
        try{
            Scanner in = new Scanner (Paths.get("Monat.dat") );
            while ( in.hasNextLine() ){
                s.Monat = in.next();
                s.Grad = in.nextInt();
                s.zeige();
            }
        }
        catch ( IOException e){
            System.out.println("\n File not found.\n\n");
        }
       
    }
       
        public static void main (String [] args){
            Temperaturen t = new Temperaturen();
        }
   
      
}

Die Datei "Monat.dat" beinhaltet folgendes:
Code:
JAN 16.4
FEB 16.3
MAR 16.3
APR 16.9
MAI 18.6
JUN 20.6
JUL 22.4
AUG 23.3
SEP 22.9
OCT 21.3
NOV 19.2
DEC 17.5


Ich bin für jede Hilfe dankbar :)
 

Robat

Top Contributor
1)
s.Grad = in.nextInt();
s.Grad ist vom Typ double. Du nutzt aber nextInt .. schau dir mal nextDouble() an.

2)
Scanner in = new Scanner (Paths.get("Monat.dat") );
Anstatt hier mit Paths zu arbeiten, kannst du einfach sagen = new Scanner(new File("Monat.dat"));

3)
Entweder ersetzt du in deiner Monat.dat die Punkte durch ein Komma (bei den Gleitkommazahlen) oder du sagst dem Scanner,
dass deine Gleitkommazahlen mit einem Punkt geschrieben werden und nicht mit einem Komma.
Das kannst du bspw mit scanner.useLocale(Locale.US);.
 

Neue Themen


Oben