2015-04-30 291 views
-1

分割功能不起作用。對於最後的打印聲明,它給了我一個arrayoutofbound錯誤。任何幫助?while循環運行一次?

while (inFile.hasNext()) 
      { 
       String clean = inFile.nextLine(); 
       String[] nm = clean.split(","); 
       for (int i = 0; i < nm.length; i++) 
       { 
        System.out.println("at index "+ i +" string is "+nm[i]); 
       } 
       System.out.print("at index"+2+"Strin"+nm[3]); 
      } 

文本文件:

input1,2,3,4,5 
input2,2,3,4,5 
input3,3,4,5,6 
input4,3,4,5,6 
input5,3,4,5,6 

輸出:

at index 0 string is input1 
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3 
    at filereader.FileReader.main(FileReader.java:33) 
Java Result: 1 
+0

使用'BufferReader'的'readLine()' –

+0

我運行它時沒有遇到異常。 – ajb

+2

嘗試添加'System.out.println(Arrays.toString(nm))'查看數組中的內容。如果該輸出不能使問題清楚,那麼編輯您的問題並添加輸出。也許這會讓我們知道還需要尋找什麼。 – ajb

回答

1

的代碼似乎是正確的,我和它不應該失敗這個樣子。唯一的原因,我可以看到的是,如果在你的輸入文件中的空行,在這種情況下System.out.print("at index"+2+"Strin"+nm[3]);將在nm[3]

返回ArrayOutOfBoundException或者你可以寫這樣的代碼:

while (inFile.hasNext()) 
     { 
      String clean = inFile.nextLine(); 
      if(clean != null && clean != ""){ 
      String[] nm = clean.split(","); 
      for (int i = 0; i < nm.length; i++) 
      { 
       System.out.println("at index "+ i +" string is "+nm[i]); 
      } 
      System.out.print("at index"+2+"Strin"+nm[3]); 
      } 
     } 

希望這個作品。

+0

仍然不起作用。我不知道爲什麼。 – DkgMarine

+0

錯誤的文件位置。感謝壽! – DkgMarine

1

這給了你錯誤:

System.out.print("at index"+2+"Strin"+nm[3]); 

這是因爲你要麼有一個空行或有不到4個逗號分隔項的行。嘗試:

System.out.print("at index"+2+"Strin"+nm[nm.length-1]); 
1

也許納米不具有4個元件的線

System.out.print("at index"+2+"Strin"+nm[3]); 

檢查陣列含有至少4元件打印第四元件前的陣列。

// create a new scanner with the specified String Object 
    Scanner inFile = new Scanner(s); 
    while (inFile.hasNext()) 
    { 
     String clean = inFile.nextLine(); 
     String[] nm = clean.split(","); 
     for (int i = 0; i < nm.length; i++) 
     { 
      System.out.println("at index "+ i +" string is "+nm[i]); 
     } 
     if (nm.length > 3) { 
      System.out.print("at index"+2+"Strin"+nm[3]); 
     } 
     }