![](/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.