gpt4 book ai didi

java - 检查 NullPointerException 或 ArrayOutOfBound 异常 Java 的解决方案

转载 作者:行者123 更新时间:2023-11-30 04:16:54 24 4
gpt4 key购买 nike

在下面的代码中,我如何防范 ArrayIndexOutOfBoundsException 或 NullPointerException 因为在某些时候,注释行 2 将为 mydates[] 中的最后一个条目提供一个空值,或者dates[mod] 将抛出一个ArrayOutOfBoundException 如果我在注释行 1 中执行 mod >dates.lenght

if(dates.length >= 10){  
mydates = new String[11];
int last = dates.length;
int mod = 0;
int add_mod = (int) Math.round((double)Math.round(last) /10);

for(int i =0; i < dates.length; i++){
if(mod >= dates.length){ // line1
break;
}

mydates[i] = DateFormatter.GraphDateToString(DateFormatter.convertToDate(
Long.parseLong(dates[mod]))); //line2

mod += add_mod;
}

} else {
mydates = new String[dates.length];

for(int i =0; i < dates.length; i++){
mydates[i] = DateFormatter.GraphDateToString(DateFormatter.convertToDate(
Long.parseLong(dates[i])));
}

}

我解决这个问题的方法是再次迭代数组并检查空值,同时从那里填充新数组。但我想看看是否有更好的解决方案。

最佳答案

如果mydates只有11长,并且您知道dates至少那么长,也许可以使用mydates.length进行迭代 相反:

for(int i =0; i < mydates.length; i++){
...

那么当 i >= mydates.length 时,您将不会收到 ArrayOutOfBoundException

由于您的检查,您不会收到 modArrayOutOfBoundException:

if(mod >= dates.length) {
break;
}

对于 null 检查,添加

if (dates[mod] != null) {
mydates[i] = DateFormatter.GraphDateToString(DateFormatter.convertToDate(Long.parseLong(dates[mod])));
}

避免 NullPointerException

关于java - 检查 NullPointerException 或 ArrayOutOfBound 异常 Java 的解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18152475/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com