Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用来自文件的输入运行Java程序_Java_File_User Input_Java.util.scanner - Fatal编程技术网

使用来自文件的输入运行Java程序

使用来自文件的输入运行Java程序,java,file,user-input,java.util.scanner,Java,File,User Input,Java.util.scanner,我正在编写一个程序,从文件中读取输入,然后将其打印到屏幕上。当我运行它而不从文件中获取输入时,它工作得非常好。但是,每次我尝试从文件运行它时,它都会给我一个“线程中的异常”main“java.util.NoSuchElementException:在“假设读取输入的每个位置都会发生的错误”处找不到行。我不知道发生了什么事 假设这个程序从用户那里获取输入,创建一个照片对象,然后将信息打印到屏幕上。当我手动输入信息时,一切正常,但当我尝试使用java PhotoTest

我正在编写一个程序,从文件中读取输入,然后将其打印到屏幕上。当我运行它而不从文件中获取输入时,它工作得非常好。但是,每次我尝试从文件运行它时,它都会给我一个“线程中的异常”main“java.util.NoSuchElementException:在“假设读取输入的每个位置都会发生的错误”处找不到行。我不知道发生了什么事

假设这个程序从用户那里获取输入,创建一个照片对象,然后将信息打印到屏幕上。当我手动输入信息时,一切正常,但当我尝试使用java PhotoTest 线程“main”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));
        }

    }
}
当我手动输入信息时,一切正常,但当我尝试使用
JavaPhotoTest
获取[sic?]文件[…]的输入时

test.dat
是否也包含
“y”
确认?当您为
stdin
导入文件时,该文件的内容必须采用合法格式,就像手动键入一样


此外,您正在为
stdin
创建另一个
Scanner
实例,即使其中一个已传递给
readPhoto
。你确定你需要这样做吗

当我手动输入信息时,一切正常,但当我尝试使用
JavaPhotoTest
获取[sic?]文件[…]的输入时

test.dat
是否也包含
“y”
确认?当您为
stdin
导入文件时,该文件的内容必须采用合法格式,就像手动键入一样



此外,您正在为
stdin
创建另一个
Scanner
实例,即使其中一个已传递给
readPhoto
。是否确实需要执行此操作?

在文件的最后一行,您需要回车符。这相当于您手动键入的内容。请注意,键入时,在最后一行按enter键。

在文件中,最后一行需要回车符。这相当于您手动键入的内容。请注意,键入时,在最后一行按enter键。

这是真实代码吗?如果您不在readPhoto方法上返回一张照片,它甚至不会编译,也会发布实际读取文件的代码help@Katy当前位置在这一点上帮不了你。你需要更清楚你的程序应该做什么。在展示代码时,还要确保它抓住了问题的本质。您当前的代码中有许多问题甚至与问题无关。这是真正的代码吗?如果您不在readPhoto方法上返回一张照片,它甚至不会编译,也会发布实际读取文件的代码help@Katy当前位置在这一点上帮不了你。你需要更清楚你的程序应该做什么。在展示代码时,还要确保它抓住了问题的本质。您当前的代码中有许多问题甚至与问题无关。