【发布时间】:2016-04-09 11:06:10
【问题描述】:
我尝试了一些方法来检测代码中的 EOF,但仍然无法正常工作。 我尝试使用 BufferedReader、Scanner 和使用 char u001a 来标记 EOF,但对我的代码仍然没有任何意义。 这是我最后的代码:
Scanner n=new Scanner(System.in);
String input;
int counter=0;
while(n.hasNextLine())
{
input=n.nextLine();
char[] charInput=input.toCharArray();
for (int i = 0; i < input.length(); i++) {
if(charInput[i]=='"')
{
if(counter%2==0)
{
System.out.print("``");
}
else
{
System.out.print("''");
}
counter++;
}
else
{
System.out.print(charInput[i]);
}
}
System.out.print("\n");
}
程序在到达 EOF 时应该停止,但我不知道为什么,由于某些原因它继续运行并导致运行时错误。 请帮忙。 顺便说一下,我是新来的,如果我的问题不是很清楚,很抱歉, 之前谢谢你:)
【问题讨论】:
-
您遇到的运行时错误是什么?..
-
另外,查看this 帖子,了解如何使用
FileReader+BufferedReader读取文件 -
我相信扫描仪只会返回
null而不是 EOF 字符。这将解释运行时异常。 -
@JornVernee 否 hasNextLine 将检查底层读取是否为 null 并返回 false。他的程序在我的机器上按预期运行。
-
您正在从控制台 (stdin) 读取输入,可能它在您的主机上表现得很奇怪。尝试从您打开的文件中读取。