int和字符串,给出了意想不到的效果
下面的代码行之间的解析提供了NullPointerException
在Javaint和字符串,给出了意想不到的效果
任何输入(在SRC 07,11等)
hrs = Integer.toString((Integer.getInteger(hrs)) + 12);
所以我改成了:
Integer H = Integer.parseInt(hrs);
H = H + 12;
hrs = H.toString();
哪个工作正常。
谁能告诉我为什么第一行给NullpointerException?
你必须使用Integer.parseInt(String)
这样的:
hrs = Integer.toString((Integer.parseInt(hrs)) + 12);
但你可以使用它代替:
hrs = (Integer.parseInt(hrs) + 12) + "";
简单:你在呼唤你的两个例子,两种不同的方法。
Integer.getInteger(hrs)
是不一样的
Integer.parseInt(hrs);
见getInteger()的Javadoc:
确定具有指定名称的系统属性的整数值。 第一个参数被视为系统属性的名称。系统属性可以通过System.getProperty(java.lang.String)方法访问。然后将该属性的字符串值解释为整数值,并返回表示此值的Integer对象。可能的数字格式的详细信息可以在getProperty的定义中找到。
如果没有指定名称的属性,如果指定的名称为空或为空,或者属性的数字格式不正确,则返回null。
Then null is returned!
这就是这一切。所以,真正的答案可能是:更多地关注IDE向您提供的“代码”建议。不要盲目接受他们;但确保你是真的放下你的方法打算使用;而不是其他一些碰巧具有相似签名的人(关于输入参数和返回类型)。
一个简单的解决方案是
hrs = "" + (Integer.parseInt(hrs) + 12);
public static Integer getInteger(String nm)
确定具有指定 名称的系统属性的整数值。第一个参数被视为系统属性的名称。 系统属性可通过 System.getProperty(java.lang.String)方法访问。然后将该 属性的字符串值解释为整数值,并返回表示此值的Integer对象 。可以使用getProperty的定义找到可能的数字格式 的详细信息。
如果没有指定名称的属性,如果指定的名称 为空或为空,或者该属性的格式不正确,则返回null。
你的情况,则很可能需要使用
public static int parseInt(String s,
int radix)
throws NumberFormatException
对于两者请使用以下细节link
Integer.getInteger()不提供你的目的在这种情况下。如果您看到此方法的文档,则主要是使用指定的名称确定系统属性的整数值。如果给定名称与任何系统属性都不匹配,则返回null。
在你的代码,(Integer.getInteger(小时))+ 12这基本上是造成NPE与您试图用12
来连接空请参阅this link更多细节
人我没注意到它。我想我们都在同一线路上思考,你在我之前发布。如果你这么说,我可以删除我的。我没有任何问题... – Jabir
不用担心;只是想明白。关闭编辑窗口并获得“似曾相识”的体验感觉很奇怪。无论如何我刚刚收到我对字符串标签的100票;所以...让我们分享快乐;-) – GhostCat