2013-08-20 95 views
2
10 
aaa aaa aaa 
bbb bbb bbb 
ccc ccc ccc 
ddd ddd ddd 

我有一個文本文件,我試圖讀取與製表符分隔符。每當我讀取文件時,我會在10之後得到一個arrayindexoutofbound錯誤。我在線搜索並發現我必須在\ t後面添加-1,但我仍然得到相同的錯誤。閱讀製表符分隔的文本文件java

try{ 
     Scanner scan = new Scanner(new File("1.txt")); 
     String line=""; 
     int readline = Integer.parseInt(scan.nextLine());// 

     while (scan.hasNextLine()) 
     { 
      line = scan.nextLine(); 

      if(line.equals("ccc")) 
      { 
       break; 
      } 
     String[] split=line.split("\t"); 

      array.add(split); 
     } 
+0

你知道,什麼'破'聲明呢? – EarlGrey

+0

以及爲什麼使用parseInt?這是爲了從一個字符串中獲取int值。 – AurA

+1

無論出於何種原因,顯然都意味着成爲第一行的數字。 沒有我可以在鱈魚眼中看到的地方,如果發現這會導致數組索引超出範圍。你可以發佈更多的代碼或堆棧跟蹤? – Link19

回答

0

這樣你的代碼失去了這個醜陋的休息(休息是大部分時間避免...)

try{ 
    Scanner scan = new Scanner(new File("1.txt")); 
    String line=""; 
    int readline = Integer.parseInt(scan.nextLine());// 

    while (scan.hasNextLine()) 
    { 
     line = scan.nextLine(); 

     if(!line.equals("aaa")){ 
      String[] split=line.split("\t"); 
      array.add(split); 
     } 
    } 

而關於你的問題,我認爲你是對的整數初始化您的數組第一行,但它是10,你有12個元素。因此,索引越界,但你的問題仍不清楚......

+0

你不能硬編碼「aaa」或任何事情 – Rakesh

+0

嗯,我只是遵循示例格式,但是你是對的。 – Marc

+1

你們兩個都知道這些,你不知道他想達到什麼目的。它們都沒有回答這個問題! – Link19

12

如果你是使用Scanner這裏沒有必要split,您可以在這裏使用next()如下

Scanner sc=new Scanner(new FileReader("D:\\test.txt")); 
    while (sc.hasNextLine()){ 
     System.out.println(sc.next()); 
    } 
相關問題