我只是想知道,我是否以正确的方式解释了代码?
文件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
时是否浪费了一行?
- 巴拉特
- 尼基尔
- 确实是 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/