簡體   English   中英

讀取文件時Java掃描儀不起作用

[英]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個標記:

  1. 12
  2. KARTHIK
  3. KK

    23

  4. GG
  5. GG

您的代碼在第二次調用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM