![](/img/trans.png)
[英]Java issues with Scanner and hasNextLine() while reading a file
[英]Java Scanner is not working while reading a file
public class Test {
static private Scanner x;
public static void main(String args[])
{
try {
x=new Scanner(new File("C:\\Users\\scoda\\workspace\\Nikhil\\src\\chinese.txt"));
x.useDelimiter(" ");
while(x.hasNext())
{
String a=x.next();
String b=x.next();
String c=x.next();
System.out.println(a+b+c);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
我的输入文件是
12 karthik kk
23 gg gg
预期产量:
12karthikkk
23gggg
实际输出:
12karthikkk
23
java.util.NoSuchElementException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
我试图从很长一段时间调试问题。 感谢帮助。
因为您将分隔符更改为空格,所以换行符不算作分隔符,并且字符串中实际上只有5个标记:
KK
23
您的代码在第二次调用String c=x.next();
引发异常String c=x.next();
,因为没有第六个令牌。 如果删除x.useDelimiter(" ");
语句,它将使用默认的空格分隔符 ,它也会在换行符上拆分,从而产生6个标记。
尝试这个
StringBuffer buffer = new StringBuffer(10);
try
{
x = new Scanner(new File("D:\\test1.txt"));
x.useDelimiter(" ");
while (x.hasNext())
{
String a = x.next();
buffer.append(a);
}
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(buffer.toString());
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.