Java 无法使用扫描仪处理输入文件

Java 无法使用扫描仪处理输入文件,java,java.util.scanner,Java,Java.util.scanner,基本上,我试图通过扫描器类将字符串作为输入 public class test { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String line = new String(); for(int t=0;t<10;t++) { if(sc.hasNextLine()) lin

基本上,我试图通过
扫描器
类将
字符串
作为输入

public class test {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        String line = new String();
        for(int t=0;t<10;t++)
        {

            if(sc.hasNextLine()) line = sc.nextLine();
            System.out.println(line);
        }
    }

}
我注意到的是,当我在控制台上一个接一个地编写输入时,我得到了正确的输出。但是当我把输入粘贴在一起时,我没有得到最后的输出

如何克服这种情况

它基本上需要输入,然后给出第10个输入的输出。


注意:这与codechef的问题有关。输入将全部给出,而不是逐个输入。

您可以告诉扫描仪使用分隔符。但请注意,只有当分隔符出现在下一个数据块之后时,才能获取下一个数据块。这就是为什么你不能得到最后的输出

所以当你使用

Scanner sc = new Scanner(System.in);
sc.useDelimiter(" ");
String line = new String();

for(int t=0;t<10;t++){
    if(sc.hasNext()) line = sc.next();
    System.out.println(line);
}
Scanner sc=新扫描仪(System.in);
sc.useDelimiter(“”);
字符串行=新字符串();

对于(int t=0;t),输入文件有点不同。对于错误,很抱歉。我不是决定什么是输入文件的人output@ManojitPaul我明白了。但是如果没有定界符(无论是换行符、空格还是其他),扫描器将不知道何时应该输出数据。如果使用.nextLine(),则定界符是一个换行符(按Enter键)。该行由此终止。如果该行丢失,扫描程序会认为该行尚未完成。@好吧,无论您如何操作,程序都必须知道单个输入何时完成。因此它需要某种分隔符来标记一个输入的结束。无论是空格还是换行符。我想我理解您的问题现在是。未处理最后一个输入的原因是,它缺少其余输入的新行字符。基本上,您是在模拟Enter键,因为在每个输入(不包括最后一个输入)之后,都有一个隐藏的新行字符(在Unix环境中:\n,我相信Windows是:\r)。如果您要将输入复制到文本文件,然后转到最后一个输入并单击return,然后将所有内容(包括底部的空行)复制到控制台中,它将拾取您的最后一个输入。实际上,我无法修改输入文件,我只能将代码放在该站点中,他们将通过检查输入文件来检查输出。
Scanner sc = new Scanner(System.in);
sc.useDelimiter(" ");
String line = new String();

for(int t=0;t<10;t++){
    if(sc.hasNext()) line = sc.next();
    System.out.println(line);
}