我有各种类型的字符串,包括整数,*,+和@。它在哈希图中。当我遍历字符串时,我希望能够识别哪些部分是整数,哪些不是整数。例如,如果我使用“ * 12#”,则我想说if(string.substring(2,3))不是整数,则返回false。
下面,我正在测试是否将字符转换为整数会导致错误。但是,这给了我NumberFormatException。
//hm is hashmap
for(int i=hm.size()-1;i>=0;i--) {
if(Integer.parseInt(hm.get(i))%1==0) {
try {
System.out.println("integer");
}
catch(Exception e){
System.out.println("not integer");
}
}
}
这是错误日志:
Exception in thread "main" java.lang.NumberFormatException: For input string: "-"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at Prefix.findValue(Prefix.java:32)
at Prefix.makeHashMap(Prefix.java:27)
at Prefix.<init>(Prefix.java:10)
at Prefix.main(Prefix.java:45)
解决此问题的更好方法是什么?
答案 0 :(得分:1)
对parseInt
的调用必须在te try
内部,并且您只应捕获要处理的异常:
for(int i = hm.size() - 1; i >= 0; i--) {
try {
// Try to parse it
String temp = Integer.parseInt(hm.get(i));
System.out.println("integer");
// And for best practice, specify the exact exception
} catch(NumberFormatException e) {
System.out.println("not integer");
}
}