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

在Java中将字符串转换为Int-可能是不良数据,需要避免异常

彭弘伟
2023-03-14
问题内容

鉴于Java没有可为null的类型,也没有TryParse(),如何处理输入验证而不会引发异常?

通常的方式:

String userdata = /*value from gui*/
int val;
try
{
   val = Integer.parseInt(userdata);
}
catch (NumberFormatException nfe)
{
   // bad data - set to sentinel
   val = Integer.MIN_VALUE;
}

我可以使用正则表达式来检查它是否可解析,但这似乎也有很多开销。

处理这种情况的最佳实践是什么?

编辑:理由:关于SO的异常处理已有很多讨论,并且一般的态度是,异常应仅用于意外情况。但是,我认为不良的用户输入是预期的,并非罕见。是的,这确实是一个学术观点。

进一步编辑:

一些答案恰好说明了SO的问题所在。您将忽略所问的问题,然后回答另一个与之无关的问题。问题不在于层之间的过渡。问题不是要问如果数字不可解析该返回什么。就您所知,val
= Integer.MIN_VALUE; 对于完全依赖上下文的代码段而言,这是应用程序的正确选择。


问题答案:

差不多就可以了,尽管返回MIN_VALUE有点可疑,除非您确定将其用作错误代码是正确的选择。不过,至少我会记录错误代码的行为。

记录错误的输入(可能取决于应用程序)也可能很有用,以便您可以进行跟踪。



 类似资料:
  • 问题内容: 我正在尝试将url参数传递给这样的django模板… 这是我的views.py文件中的调用行。persistConTemplate.html是我的模板的名称,request.GET是包含url参数的字典。 在模板中,我尝试使用像这样的参数之一… numItems是我在请求中这样发送的url参数之一… 当我尝试上面的for循环时,我得到这样的输出。 我期待并希望看到字图像印刷12次… 谁

  • 我有一个12个月温度的文本文件。但是当我试图找到平均温度时,我得到的错误是“String conly be converty to int”(字符串不能转换为int temp[counter]=sc.nextline(); 有人能说出怎么了吗?

  • 注意:这个问题包含不建议使用的前1.0代码!不过,答案是正确的。 要在Rust中将转换为,我可以执行以下操作: 我知道如何将转换为的唯一方法是获取其中的一个片段,然后像这样使用: 有没有办法直接将转换为?

  • 所以我尝试将int转换为string,然后再转换为charAt(0)、charAt(1)和charAt(2)。我这样做是为了把3位数的整数拆分成3个不同的整数。然后我想把这些整数转换成字符串。 我想做的是从101及以上的数字中提取并用文字打印出来。我有数百种、十种和一种方法。我试着把第一个整数应用到百分法,第二个整数应用到十分法,第三个整数应用到一分法。 这是一种 现在我正试着打印单词,我发现了3

  • 我正在尝试如何在Swift中将转换为。 我想出了一个变通方法,使用但是我想知道如何在Swift中完成这一切。