2017-03-12 65 views
2

雖然我明白,錯誤本身確實告訴我問題出在哪裏,它在D2.main(D2.java:19)或第19行即時通訊無法弄清楚究竟是什麼問題。我試圖通過使用split(「:」)來遍歷文件,以便以良好整潔的格式打印文件中的所有信息。雖然獲得其他信息不是一個問題,但從中獲得社會安全號碼似乎產生了相當頭痛的問題。下面是我的代碼和任何指針或幫助將非常感激!爲此工作了更多的小時,然後id喜歡承認,並希望它的第二雙眼睛可能指出一些愚蠢的東西,我可以感覺後來沒有意識到愚蠢。謝謝!Java.Lang.StringIndexOutOfBoundsException:字符串索引超出範圍:5

import java.util.Scanner; 
import java.io.*; 
public class D2 
{ 
    public static void main(String[] args)throws FileNotFoundException 
    { 
    String categories, sections[]; 
    int x; 
    Scanner reader = new Scanner(new FileReader(args[0])); 
    PrintWriter outputfile = new PrintWriter(args[1]); 

    while(reader.hasNext()) 
    { 
     categories = reader.nextLine(); 
     sections = categories.split(":"); 
     String social = sections[3]; 
     String k, l, p; 
    k = social.substring(0,3); 
    l = social.substring(3,5); 
    p = social.substring(5); 

    String ssn = k + "-" + l + "-" + p; 
    String top = ("Student Name      SSN       DOB    CURR     GRAD YR"); 
    String middle = ("------------      ---       ---    ----     -------"); 
    String bottom = (sections[0] + "      " + ssn + " " + sections[4] + "    " + sections[1] + "  " + sections[2]); 

    outputfile.println(top + "\n" + middle + "\n" + bottom); 

    outputfile.close(); 
    reader.close(); 
    } 
} 
} 

約翰·瓊斯:987-65-4321:1956年3月12日:ELT:2005 費城約翰:876-54-3219:1989年12月15日:CIS:2003 威廉·斯威尼:768- 45-2768:01-03-1990:MAS:2006 Terry Hundred:734-85-9437:04-15-1965:BAD:2001 Susan Pine:489-37-2637:08-08-1988:INS: 2007

上面是我嘗試讀取的文本文件,輸出文件的名稱並不重要。

String social = sections[3]; //equals ELT 
+0

java.lang.StringIndexOutOfBoundsException:字符串索引超出範圍:5 \t在java.lang.String.substring(未知來源) \t在D2.main(D2.java:19) –

+0

以上是錯誤 –

回答

0

,因爲你得到這個錯誤。當您使用categories.split(":")時,會創建一個數組。在這個數組中,第四項sections[3](因爲索引從0開始)在第一次迭代中包含"ELT"。由於ELT只有3個字母,因此嘗試使用子字符串訪問索引5會導致異常。

還有一件事:你可以不要在循環中關閉readeroutfile。當你這樣做的時候,只有第一行會被寫入,第二次迭代會發生異常。

+0

謝你我一直沒有把這段代碼看作是問題,我究竟該如何解決這個問題呢?當我將值調整到任何更高的值時,4我得到相同的越界錯誤,但是在該行上。 –

+0

Nvm到最後的評論,我想通了。現在我只需要讓它看起來很漂亮。 –

0

我想訪問數組,當你使用了錯誤的指標:

相關問題