如何解决将String转换为int如果String为null,则将int设置为0
不用编写自己的函数,而是使用try-catch的内部构造。您的问题是,jsonarray
orjsonarray.getJSONObject(i)
或值本身是a,null
并且您在null引用上调用方法。请尝试以下操作:
int block_id = 0; //this set's the block_id to 0 as a default.
try {
block_id = Integer.parseInt(jsonarray.getJSONObject(i).getString("block_id")); //this will set block_id to the String value, but if it's not convertable, will leave it 0.
} catch (Exception e) {};
在Java中,异常用于标记意外情况。例如,将非数字解析为数字String
(NumberFormatException
)或在null
引用上调用方法(NullPointerException
)。您可以通过多种方式捕获它们。
try{
//some code
} catch (NumberFormatException e1) {
e.printStackTrace() //very important - handles the Exception but prints the information!
} catch (NullPointerException e2) {
e.printStackTrace();
}
或利用事实,它们都可以扩展Exception
:
try {
//somecode
} catch (Exception e) {
e.printStackTrace;
};
或从Java 7开始:
try {
//somecode
} catch (NullPointerException | NumberFormatException e) {
e.printStackTrace;
};
注意
我相信您会仔细阅读答案,请记住,在StackOverflow上,我们需要最小,完整和可验证的示例,其中包括您的异常的StackTrace。就您而言,它可能始于以下内容:
Exception in thread "main" java.lang.NullPointerException
然后,调试会容易得多。没有它,这只是猜测。
根据公认的答案
接受的答案很好,并且可以使用,只要用key:存储的值block_id
是数字即可。如果不是数字,您的应用程序将崩溃。
代替:
JSONObject jObj = jsonarray.getJSONObject(i);
int block_id = jObj.has("block_id") ? jObj.getInt("block_id") : 0;
一个应该使用:
int block_id;
try{
JSONObject jObj = jsonarray.getJSONObject(i);
block_id = jObj.has("block_id") ? jObj.getInt("block_id") : 0;
} catch (JSONException | NullPointerException e) {
e.printStackTrace();
}
解决方法
我有一个将Android数据保存在其中的函数,sqlite
但必须将String
数据转换为Integer
。
只要String
是null
我想保存为0
以下是我的代码,只要值是 null
int block_id = Integer.parseInt(jsonarray.getJSONObject(i).getString("block_id"));
将block_id
上述转化为Integer
。
这是我决定要执行的操作,但是仍然无法将字符串值转换为0
每当它的null
。
int block_id = Converttoint(jsonarray.getJSONObject(i).getString("block_id"));
然后功能 convertToInt
public static Integer convertToInt(String str) {
int n=0;
if(str != null) {
n = Integer.parseInt(str);
}
return n;
}
我应该如何对其进行更改以使其起作用?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。