我正在尝试编写程序,但我的客户端可能无法以正确的格式输入信息。如何判断String是否是Java中的int(因此我可以抛出我写的错误消息并允许它们重试)?即,在java中是否有一个方法可以让我检查String str是否为int?
类型select m.pid
from mapping m join
attributes a
on m.attribId = a.attribId and a.d = 'dS'
group by m.pid
having sum(case when a.d = 'dS' then 1 else 0 end) > 0 and -- at least one of these
sum(case when a.d = 'd1' then 1 else 0 end) = 0; -- none of these
答案应包括所需的进口(如果有的话)和基本方法。而且,尽可能简单会非常好。如果这实际上是一个问题的副本,请发布链接(我找了一段时间,但在谷歌或这里找不到任何东西,似乎它会解决我的问题)。
答案 0 :(得分:1)
在类中创建一个方法 IntegerCheck.java :
public Boolean isInteger (String s)
{
try
{
Integer.parseInt(s);
return true;
} catch (Exception e)
{
return false;
}
}
然后在你的程序中使用它:
首先导入课程:
import <package name>.IntegerCheck;
在所需功能内:
IntegerCheck obj=new IntegerCheck();
String input=kb.nextLine(); //Get user input using Scanner or any other method, make sure the return type is string.
if(obj.isInteger(input))
{
//Success.
}
else
{
//throw an error message that I write and allows them to retry
}
答案 1 :(得分:0)
package main.java;
public class Test {
public static boolean isNumeric(String s){
// 11 Because might be negative, but 32bit integer overflow is
// 10 characters long.
if (s.length() > 11) return false;
int i = 0;
if (s.startsWith("-")) i++;
for(; i < s.length(); i++){
if (!Character.isDigit(s.charAt(i))) return false;
}
return true;
}
public static void main(String[] args){
System.out.println(Test.isNumeric("100"));
System.out.println(Test.isNumeric("aa"));
System.out.println(Test.isNumeric("12a"));
System.out.println(Test.isNumeric("1002"));
System.out.println(Test.isNumeric("-11232"));
System.out.println(Test.isNumeric("999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999"));
System.out.println(Test.isNumeric("4294967294"));
}
}
编辑我忘了包含负数。 编辑处理整数溢出的粗略方法。
请注意,这只适用于整数。正则表达式似乎有点矫枉过正,但并不是一个糟糕的解决方案。根据这个问题,您不应该使用例外来控制程序流:Why not use exceptions as regular flow of control?