java - 关于从文件读取时跳过备用行的解释?

标签 java java.util.scanner

我只是想知道,我是否以正确的方式解释了代码?

文件Bharath.txt具有以下内容:

Hello ! B . We created your file succesfully . We have updated you file , Sir ! Bharath Nikhil Friends Indeed

考虑下面的代码:

import java.util.Scanner;
import java.io.*;

class FilInpStr
{
    public static void main(String arg[]) throws Exception
    {
        FileInputStream obj=new FileInputStream("Bharath.txt");
        Scanner input=new Scanner(obj);

        String n="";
        while((n=input.nextLine())!=null)
        {
            System.out.println(n);
        }

    }
}

上面的代码以这种方式工作得很好。但是,当我不考虑将 input.nextLine() 存储在 String 中时,它会开始交替跳行。它是否甚至将键盘上的 Enter 作为输入?

那么,当我按 Enter 时,它也会传递转义序列作为输入,这就是它跳过一个并打印另一个的原因?

另一个疑问是关于 while 循环:在比较它是否为 null 时是否浪费了一行?

  1. 巴拉特
  2. 尼基尔
  3. 确实是 friend

所以,当我引用时:

while((input.nextLine()) != null)
{
    System.out.println(input.nextLine());
}

它会检查是否Bharath==null,如果没有,它只会打印Nikhil?并发布 Nikhil,它将跳过下一行,因为它采用 Enter 作为转义序列。

请指正!我可能混淆了两种不同的方法。因此是一个初学者。

此外,请务必区分将 input.nextLine() 传递到 String 与作为独立代码传递之间的区别。

最佳答案

But , when I do not consider storing " input.nextLine()" in a String , it begins to skip line alternatively . Is it , that , it is taking even the ENTER from keyboard as input ?

嗯,不,它只是在每次调用 input.nextLine() 时读取下一行。这应该不足为奇。忽略转义序列等。为了简单起见,假设 input.nextLine() 只是从某处的字符串列表中读取......它有一个光标显示它在列表中的位置。每次调用 input.nextLine() 时,它都会返回当前行并向下移动光标。

如果您在每次迭代中调用 input.nextLine() 两次(一次在 while 条件中,一次在主体内),那么您将只执行一半的次数迭代就像每次迭代调用它一次(根据您的原始代码)。

关于java - 关于从文件读取时跳过备用行的解释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34928055/

相关文章:

Java:需要标识符

java - 让扫描仪包含但忽略引用的文本?

java - 限制 do-while 运行 7 次,除非给出正确的输入

java - 通过扫描仪更新二维阵列

java - 涉及非常大的数组索引存储非常大的值的问题的替代方案

java - Windows中的 "Safe To Remove Hardware"是什么样的弹出窗口

JAVA 如何打印一个包含3个整数值的对象?

Java 扫描器 hasNextLine 返回 false

Java - 如何将用户输入作为方法调用执行?

java - 从 Java 调用时 Python 进程永远不会完成