2017-01-16 31 views
0
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(); 
     } 
    } 
} 

我的輸入文件是Java的掃描儀無法正常工作

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) 

我想從很長一段時間調試問題。 幫助表示讚賞。

+1

我個人會讀整條生產線,然後分裂的'」「' –

+0

您是否嘗試打印,B和C內循環? – synchronizer

+0

我試着讀完整行我爲我工作 –

回答

4

因爲你改變了分隔符的空間,換行不能算作一個分隔符,居然有5只在您的字符串標記:

  1. KARTHIK
  2. KK

  3. GG
  4. GG

由於沒有第六個標記,您的代碼在第二次調用String c=x.next();時拋出異常。如果您刪除x.useDelimiter(" ");聲明,它將使用default whitespace delimiter,它也將分割您的換行符,從而產生6個令牌。

+0

非常感謝,明白我的錯誤。 –

0

試試這個

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()); 
    }