2016-01-30 49 views
0

我有一個文本文件,其中包含英語單詞的集合。單詞按照字母順序用一個單詞寫在一行上,沒有空行,沒有標點符號等。該列表如下圖所示。名單還在繼續,直到從「Z」開始的最後一個字,也沒有空行任何使用Scanner從文件中讀取單詞class nextLine()方法

The list continues till the last word starting from 'z'. There are no empty Lines whatsoever

我做了一個簡單的程序,通過行從該文件一行字,並在不同的文件寫入的話。問題是,我得到這個錯誤線程「main」 java.lang.StringIndexOutOfBoundsException

例外:字符串索引超出範圍:0 在java.lang.String.charAt(來源不明) 在sd.main(sd.java:27)

這隻有在nextLine()方法返回一個帶有if條件的行中的空字符串時纔會發生。但是我從中讀取的文件中沒有空行。如果我將nextLine的每個實例)方法在程序中使用next()方法,它的工作原理完美無瑕。善解人意的細節導致這種異常發生。

import java.io.* ; 
    import java.util.*; 

    public class sd { 

    public static void main(String[] argue) throws java.io.IOException { 

    char incre = 97 ; 
    File diction = new File("C:/Users/LoRd CuRZon/Desktop/dictionary/wordsEn.txt") ; 
    PrintWriter alpha_list = new PrintWriter("C:/Users/LoRd CuRZon/Desktop/dictionary/a.txt") ; 
    Scanner dictionary = new Scanner(diction) ; 
    Scanner dictionarytemp = new Scanner(diction) ; 

    while(dictionary.hasNextLine()) { 

     if((char)incre != ((dictionarytemp.nextLine()).charAt(0))) {  
      alpha_list.close(); 
      incre++ ; 
      alpha_list = new PrintWriter("C:/Users/LoRd CuRZon/Desktop/dictionary/" + (char)incre + ".txt") ; 
     } 

    alpha_list.println(dictionary.nextLine()); 

     } 

     alpha_list.close(); 
     dictionary.close(); 
    } 

} 

回答

1

這是你第二個nextLine()這是導致問題。它移動到數組中的下一個點。每循環執行兩次(在while循環中)。

所以,如果你改變:

alpha_list.println(dictionary.nextLine()); 

alpha_list.println(incre); 

你會用完的束縛。

+0

正是這是根本原因。謝謝! –

相關問題