读取文件时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个标记:

  • 十二,
  • 卡提克
  • kk

    二十三

  • gg
  • gg

  • 您的代码在第二次调用
    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());
        }