当前位置: 首页 > 面试题库 >

将String转换为int。如果String为null,则将int设置为0

麹鸿煊
2023-03-14
问题内容

我有一个将Android数据保存在其中的函数,sqlite但必须将String数据转换为Integer

只要Stringnull我想保存为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;
}

我应该如何对其进行更改以使其起作用?


问题答案:

不用编写自己的函数,而是使用try-catch的内部构造。您的问题是,jsonarrayor
jsonarray.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中,异常用于标记意外情况。例如,将非数字解析为数字StringNumberFormatException)或在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();
}


 类似资料:
  • 问题内容: 我正在尝试找出如何在Swift中将转换为。 我想出一种解决方法,但是我很想弄清楚如何在Swift中做到这一点。 问题答案: 转换为: 而另一种方式-转换为: 或者,如果您使用的是Swift 2或3:

  • 我有一个HashMap和一个包含键/值的属性文件。属性文件以这种格式存储键/值“4,5=2”我构建了一个从文件加载属性的方法,它将这对“键/值”放入一个HashMap数组(字符串、整数)中。但我的问题是,我希望键的每个元素都存储为int形式,以便将它们用作另一个方法的参数。键存储为字符串。如有任何帮助,我们将不胜感激。谢谢你!

  • 我希望代码得到一个int作为参数,如果年龄是奇数,则加3,如果是偶数,则加2,然后作为字符串返回。 有了这个代码我得到了 不兼容的类型:无法将int转换为字符串 九号线不是已经换了吗?

  • 问题内容: 我有一个只接受字符串的方法。 但是只接受一个int。通常,这是由SWT.TOP是静态int之类的设置的。 是否可以用类似的方法调用此方法? 问题答案: 如果使用Java 7,则始终可以在字符串上使用: 说实话,我会避免使用像这样的字符串。如果我真的不得不以其他方式存储对齐状态,我将使用可能在较旧版本的Java中使用的枚举。

  • 我在pandas中有一个数据帧,它混合了int和str数据列。我想先连接dataframe中的列。为此,我必须将列转换为。我试着做了如下工作: 或 但在这两种情况下,它都不起作用,我得到一个错误,说“不能连接'str'和'int'对象”。将两个列串联在一起可以很好地工作。

  • 问题内容: 我正在一个项目中,所有从到的转换都是这样完成的: 我对Java不熟悉。我想这是通常的做法还是出了什么问题? 问题答案: 正常的方法是或。 串联可以工作,但是这是非常规的,可能会产生难闻的气味,因为这表明作者不了解上述两种方法(他们可能还不知道什么?)。 当与字符串一起使用时,Java对+运算符有特殊的支持(请参阅文档),它将你发布的代码转换为: 在编译时。它的效率稍低(最终会调用,这反