读取文件时Java扫描程序不工作
我的输入文件是读取文件时Java扫描程序不工作,java,java.util.scanner,Java,Java.util.scanner,我的输入文件是 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(" ");
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
我一直试图调试这个问题。
非常感谢您的帮助。因为您将分隔符改为空格,所以换行符不算作分隔符,而且字符串中实际上只有5个标记:
您的代码在第二次调用
String c=x.next()时引发异常代码>,因为没有第六个令牌。如果删除x.useDelimiter(“”)代码>语句,它将使用,这也将在换行符上拆分,产生6个标记。因为您将分隔符更改为空格,所以换行符不算作分隔符,并且字符串中实际上只有5个标记:
十二,
卡提克
kk
二十三
gg
gg
您的代码在第二次调用String c=x.next()时引发异常代码>,因为没有第六个令牌。如果删除x.useDelimiter(“”)代码>语句,它将使用,这也将在换行符上拆分,生成6个标记
试试这个
试试这个
就我个人而言,我会读整行,然后在上拆分。“
你试过在循环中打印a、b和c吗?我试过读整行我对meI没什么用,试过在循环中打印a、b、c它打印得很好,但最后它显示了例外情况扫描仪可能检测到超出最后一个“gg”的内容,比如一条新线?这意味着String=x.next()将导致异常。您会在循环之前放置一个计数器,并查看异常是否发生在迭代4中吗?(从1开始,在扫描仪#next()调用之前打印。)编辑:基本上是shmosel说的。就我个人而言,我会读整行,然后在上拆分。“
你试过在循环中打印a、b和c吗?我试过读整行我帮meI试过打印a、b,c内部循环打印良好,但在最后显示例外情况是否可能扫描仪检测到最后一个“gg”之外的内容,例如换行符?这意味着String=x.next()将导致异常。您会在循环之前放置一个计数器,并查看异常是否发生在迭代4中吗?(从1开始,在扫描仪#next()调用之前打印。)编辑:基本上是shmosel说的。非常感谢,理解我的错误。非常感谢,理解我的错误。
12karthikkk
23
java.util.NoSuchElementException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
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());
}