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

У меня есть текстовый файл, который я пытаюсь читать с разделителями табуляции. всякий раз, когда я читаю файл, я получаю ошибку arrayindexoutofbound после того, как 10. я ищу в Интернете и обнаружил, что мне нужно добавить -1 за \ t, но я все равно получаю ту же ошибку.чтение tab с разделителем текстовый файл 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()); 
    } 
Смежные вопросы