2017-04-09 200 views
0

我試圖拆分此字符串,這樣我可以指定每個值到它自己的變量時出界異常。但我似乎無法讓它看起來像是一個無限的例外。當我用lineSplit1 [0]打印它時很好,當我包含lineSplit1 [1]時,問題就開始了。下面是我試圖從文本文件「Friday¬7/ 4 /2017¬12:50¬13:50¬Test¬」分割線之一分割字符串的Java

+3

你調試呢?你確定'lineSplit'包含2個元素(不要假設)? – Carcigenicate

+0

@Carcigenticate調試它沒有幫助,並打印lineSplit1 [0]打印星期五。所有關於查找和分配下一個變量的建議都表明我做得正確,這就是爲什麼我不瞭解這個例外。 – hilario

+0

你能向我們展示'repeatData.txt'文件的內容嗎? – Jezor

回答

0

那麼你得到的問題是這樣的: java.lang.ArrayIndexOutOfBoundsException 這是什麼意思?你試圖從你的數組中獲得一個不存在的位置(在你的例子lineSplit1 [1]中),爲什麼會發生這種情況?也許你的文件有時不包含字符「¬」兩次或更多次。

例如看這個

String string = "Fridays7/4/2017d12:50d13:50dTestd"; 
      String[] lineSplit1 = string.split("¬"); 
      for(String s: lineSplit1){ 
       System.out.println(s); 
       System.out.println(lineSplit1.length); 
       String day1 = lineSplit1[0]; 
       String date1 = lineSplit1[1]; 
       System.out.println(day1+""+date1); 
      } 
    } 

我有同樣的問題,因爲你,但你可以這樣做:

String string = "Fridays7/4/2017d12:50d13:50dTestd"; 
    String[] lineSplit1 = string.split("¬"); 
    for(String s: lineSplit1){ 
     System.out.println(s); 
     String day1 = lineSplit1[0]; 
     String date1 = null; 
     if(lineSplit1.length>1) 
     date1= lineSplit1[1]; 
     else 
      date1="thisisANullDate"; 
     System.out.println(day1+""+date1); 
    } 

}

現在,我告訴我的程序,檢查我的陣列lenght> 1,如果它是正確的,我知道我有日期1,如果它不是真的好,我可以做我想做的事情,所以:

1 .-檢查所有你的線是相等的(當你分開是因爲你知道,有始終是相同的守護神) 2:如果someimes這種情況不會發生,然後使用驗證爲我。

希望它可以幫助你

0

試試這個方法:

public static void main(String[] args){ 
    String testStr="Friday¬7/4/2017¬12:50¬13:50¬Test¬";     
    String[] lineSplit1 = testStr.split("¬"); 
    if (lineSplit1.length>1){ 
     System.out.println("Number of words: "+lineSplit1.length); // print using index=1 
     System.out.println(lineSplit1[1]); 
    } 
    Scanner scanner = new Scanner(testStr); 

    while(scanner.hasNext()){      
    System.out.println(scanner.next());      
    } 
    scanner.close(); 
}