質問

私は、ファイルからの入力を読み込み、それを画面に出力するプログラムを書いています。私は、ファイルからの入力を取ることなく、それを実行すると、それは完全に正常に動作します。入力が読まれると仮定されているすべての場所を発生するエラー:「で見つかりませんラインjava.util.NoSuchElementException 『しかし、私は、ファイルからそれを実行しようとするたびに、それは私のメインの』スレッドでの例外」を与えます。私は何が起こっているか見当がつかないます。

このプログラムは、ユーザからの入力を取る写真のオブジェクトを作成し、画面に情報を印刷することとしています。すべては私が手動で情報を入力していたときに細かい実行されますが、私はJavaのPhotoTestを使用しようとすると、 スレッド「メイン」java.util.NoSuchElementExceptionの例外:いいえ行が見つかりませんでした
  java.util.Scanner.nextLineで(Scanner.java:1516)
  PhotoTest.readPhotoで(PhotoTest.java:31)
  PhotoTest.main(PhotoTest.java:74)で

を入力した私のコード:

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));
        }

    }
}
役に立ちましたか?

解決

  

すべては私が手動で情報を入力していたときに正常に動作が、私は[原文?]ファイル[...]

のための入力を取得するjava PhotoTest < test.datを使用しようとすると、

test.dat"y"の確認が含まれていますか? stdinのためのファイルにするときは、パイプ、それを手動で入力したかのように、そのファイルの内容は、法的形式にする必要があります。

<時間>

また、あなたは1がすでにScannerに渡されていてもstdinのための別のreadPhotoのインスタンスを作成しています。あなたはこれを行うために必要か?

他のヒント

あなたのファイルでは、最後の行に改行を必要とします。それはあなたが手動で入力しているものに相当します。あなたが入力しているとき、最後の行でEnterキーを押すことに注意してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top