簡體   English   中英

Java BufferedReader while循環超出范圍異常

[英]Java BufferedReader while loop out of bounds exception

我正在使用BufferedReader從文本文件讀取數據。 變量“ reg”是我要訪問的數據字符串中的第四個條目。

我收到異常:“線程“主”中的異常java.lang.ArrayIndexOutOfBoundsException:3”

這是我的代碼:

package calctest;

import static calctest.CalcTest.reg;
import java.io.*;

public class CalcTest {

    static Integer reg, prov;

public static void main(String[] args) throws Exception{

String readFile = "M:\\MandNDrives\\mwallace\\JAVA for NEMS\\EORModule\\NEMSEORDB.txt";
    BufferedReader br = null;
    String line = "";
    String delim = "[ ]+";

    try {        
        br = new BufferedReader(new FileReader(readFile));
        br.readLine();
        while ((line = br.readLine()) != null) {

            String [] reservoir = line.split(delim);

            reg = Integer.parseInt(reservoir[3]);

            System.out.println(reg);

         }
         }catch (FileNotFoundException e) {
         }catch (IOException e) {

       }    

     }

  }

您的錯誤與閱讀無關。 錯誤是儲液池(有時)的長度小於4。

 while ((line = br.readLine()) != null) {
        String [] reservoir = line.split(delim);

        for(String s : reservoir)
            System.out.println(s);  //Post what this outputs for debugging purposes

        if (resivoir.length > 3)
            reg = Integer.parseInt(reservoir[3]);
        else
            reg = ... //do something else...

        System.out.println(reg);

 }

異常是ArrayIndexOutOfBoundsException.Oracle文檔說:

拋出該錯誤指示數組已使用非法索引訪問。 索引為負或大於或等於數組的大小。

錯誤-> java.lang.ArrayIndexOutOfBoundsException:3表示您正在嘗試訪問索引3。

正在訪問索引3的行是

   reg = Integer.parseInt(reservoir[3]);

請檢查如下

 if (resivoir.length > 3)
            reg = Integer.parseInt(reservoir[3]);
        else
            //there must be some error or do something else

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM