Frage

Ich schreibe ein Programm, das die Eingabe aus einer Datei liest und druckt sie dann auf den Bildschirm. Als ich es, ohne dabei die Eingabe von der Datei ausführen, funktioniert es völlig in Ordnung. jedes Mal wenn ich versuche jedoch, um es von der Datei ausführen es gibt mir eine „Exception in thread‚main‘java.util.NoSuchElementException: keine Linie bei gefunden“ Fehler, der jeden Ort der Eingang suppose zu lesenden auftritt. Ich habe keine Ahnung, was los ist.

Dieses Programm wird angenommen, die Eingaben vom Benutzer zu nehmen, ein Foto-Objekt erstellen und dann die Informationen auf den Bildschirm drucken. Alles läuft gut, wenn ich die Informationen manuell eingeben bin, aber wenn ich versuche, Java zu verwenden Fototest Exception in thread "main" java.util.NoSuchElementException: keine Zeile gefunden
  bei java.util.Scanner.nextLine (Scanner.java:1516)
  bei PhotoTest.readPhoto (PhotoTest.java:31)
  bei PhotoTest.main (PhotoTest.java:74)

Mein Code, der Eingang hat:

private static Photo readPhoto(Scanner scanner) throws ParseException
{
    Date dateTaken;

    Scanner scan = new Scanner(System.in);

    String subject = scan.nextLine();
    subject = subject.trim();

    String location = scan.nextLine();
    location = location.trim();

    String date = scan.nextLine();
    date = date.trim();
        if (date.equals("")){ //if the date is empty it is set to null
            dateTaken = null;
            }
        else { //if a date is entered, it is then parsed
            DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
            dateTaken = df.parse(date);
            }

    String file = scan.nextLine();
    file = file.trim();
    File photoFile = new File(file);

    //creates a Photo object from the information entered
    Photo Photo = new Photo(subject, location, dateTaken, photoFile);

    return Photo;
}

public static void main(String[] args) throws ParseException
{
    boolean endprogram = false;
    Scanner scan = new Scanner(System.in);

    //creates  a loop so that the user may enter as many photos as they wish
    while (!endprogram)
    {
        System.out.println("Would you like to enter a photo (y/n)?");

        //if the input is anything other than y, the program ends
        if(!scan.next().equalsIgnoreCase("y"))
        {
            endprogram = true;
        }
        else 
        {
            System.out.println(readPhoto(scan));
        }

    }
}
War es hilfreich?

Lösung

  

Alles läuft gut, wenn ich die Informationen manuell eingeben bin aber wenn ich versuche java PhotoTest < test.dat zu verwenden, um die Eingabe für [sic?] Erhalten eine Datei [...]

Does test.dat enthalten auch die "y" Bestätigungen? Wenn Sie Rohr in einer Datei für stdin, der Inhalt dieser Datei in Rechtsform sein muss, als ob es manuell eingegeben wurde.


Auch Sie sind ein weiteres Beispiel für Scanner stdin zu schaffen, auch wenn man bereits auf readPhoto weitergegeben. Sind Sie sicher, dass Sie dies tun müssen,?

Andere Tipps

In Ihrer Datei benötigen Sie einen Wagenrücklauf in der letzten Zeile. Das wäre das Äquivalent zu dem, was Sie manuell eingeben. Beachten Sie, dass, wenn Sie mit der Eingabe, in der letzten Zeile sind Sie die Eingabetaste drücken.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top