尝试在将字符串数组转换为整数时捕获异常

问题描述 投票:0回答:1

我有一个文本文档,其中包含由“|”表示的数字列表。 例如:

0|0|2
1|0|1
1|1|0
2|0|1
2|1|0
2|2|1
3|0|0
3|1|1
3|2|0
3|3|1

我正在生成这个代码,并且所有方法的底部都有一行额外的代码。我知道我将始终拥有这一行,并相应地编写了我的代码,在创建 int 数组时使用 -1 值。问题是当我编辑文件后有两行而不是一行时。除了进入文件删除额外的行之外,我希望代码能够忽略这个问题。 我当前的代码无需额外的行即可工作:

while(scc.hasNextLine()){  
         String[] temp = scc.nextLine().split("\\|");
         for(int j = 0; j < 3; j++){             
             arr[points][j] = Integer.parseInt(temp[j]);
         }         
         points++;
     }
     sdcc.close();

当底部只有一行时,此方法有效且没有例外。但是当有两个时,我会因为有一个没有整数的空行而出现“NumberFormatException”。

我无法分享我的所有代码,因为它非常大并且使用多个客户函数。感谢您提供的任何帮助。

我尝试使用以下方法捕获异常:

while(scc.hasNextLine()){
            String[] temp = scc.nextLine().split("\\|");
            for(int j = 0; j < 3; j++){
               try{
                   arr[points][j] = Integer.parseInt(temp[j]);
               }
               catch (NumberFormatException ignore){}
            }
            points++;
        }
        scc.close();

当忽略这两个值时,这会生成一个新的错误“ArrayIndexOutOfBoundsException”,我的输出将变成只有一行代码而不是数字列表。

java try-catch indexoutofboundsexception numberformatexception
1个回答
0
投票

如果您只想忽略空行,请检查行的长度。

String line = scc.nextLine() ;
if ( ! line.isEmpty() ) 
{
    String[] temp = line.split("\\|");
    …
}
© www.soinside.com 2019 - 2024. All rights reserved.