猿问

确定字符串是否是Java中的整数

确定字符串是否是Java中的整数

我试图确定字符串数组中的特定项是否为整数。

我是.split(" ")'ing中的内嵌表达式String窗体,然后尝试将结果数组拆分为两个数组;一个用于整数,一个用于运算符,同时舍弃括号和其他杂项。实现这一目标的最佳方法是什么?

我想我也许能找到一个Integer.isInteger(String arg)方法之类的,但没有这样的运气。


慕无忌1623718
浏览 418回答 3
3回答

慕后森

最天真的方法是迭代字符串,并确保所有元素都是给定基数的有效数字。这是尽可能高效的,因为您必须至少查看每个元素一次。我想我们可以在基数的基础上对它进行微优化,但是对于所有的意图和目的,这都是你所期望得到的最好的结果。public&nbsp;static&nbsp;boolean&nbsp;isInteger(String&nbsp;s)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;isInteger(s,10);}public&nbsp;static&nbsp;boolean&nbsp;isInteger(String&nbsp;s,&nbsp;int&nbsp;radix)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;if(s.isEmpty())&nbsp;return&nbsp;false; &nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;s.length();&nbsp;i++)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(i&nbsp;==&nbsp;0&nbsp;&&&nbsp;s.charAt(i)&nbsp;==&nbsp;'-')&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(s.length()&nbsp;==&nbsp;1)&nbsp;return&nbsp;false; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;continue; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(Character.digit(s.charAt(i),radix)&nbsp;<&nbsp;0)&nbsp;return&nbsp;false; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true;}或者,您可以依赖Java库来实现这个功能。它不是基于异常的,它将捕获几乎所有您能想到的错误条件。它会更加昂贵(您必须创建一个Scaner对象,在一个非常紧的循环中,您不想这样做。)但是通常情况下,它不应该太贵,所以对于日常操作来说,它应该是相当可靠的。public&nbsp;static&nbsp;boolean&nbsp;isInteger(String&nbsp;s,&nbsp;int&nbsp;radix)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;Scanner&nbsp;sc&nbsp;=&nbsp;new&nbsp;Scanner(s.trim()); &nbsp;&nbsp;&nbsp;&nbsp;if(!sc.hasNextInt(radix))&nbsp;return&nbsp;false; &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;we&nbsp;know&nbsp;it&nbsp;starts&nbsp;with&nbsp;a&nbsp;valid&nbsp;int,&nbsp;now&nbsp;make&nbsp;sure &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;there's&nbsp;nothing&nbsp;left! &nbsp;&nbsp;&nbsp;&nbsp;sc.nextInt(radix); &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;!sc.hasNext();}如果最佳实践对您来说并不重要,或者您想要对执行代码评审的人进行骚扰,那么可以尝试使用以下方法来查看代码的大小:public&nbsp;static&nbsp;boolean&nbsp;isInteger(String&nbsp;s)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;try&nbsp;{&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Integer.parseInt(s);&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;catch(NumberFormatException&nbsp;e)&nbsp;{&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;catch(NullPointerException&nbsp;e)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;only&nbsp;got&nbsp;here&nbsp;if&nbsp;we&nbsp;didn't&nbsp;return&nbsp;false &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true;}

呼如林

或者,您可以从Apache Commons的好朋友那里寻求一些帮助:StringUtils.isNDigic(StringStr)
随时随地看视频慕课网APP

相关分类

Java
我要回答