我必须从控制台读取菜单选项,选项可以是整数或字符串。我的问题是,是否有另一种方法来检查输入是字符串还是int
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Read {
public Object read(){
String option = null;
BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in));
try {
option = buffer.readLine();
if(isInt(option)){
return Integer.parseInt(option);
} else if(isString(option)){
return option;
}
} catch (IOException e) {
System.out.println("IOException " +e.getMessage());
}
return null;
}
private boolean isString(String input){
int choice = Integer.parseInt(input);
if(choice >= 0){
return false;
}
return true;
}
private boolean isInt(String input){
int choice = Integer.parseInt(input);
if(choice >= 0){
return true;
}
return false;
}
}
答案 0 :(得分:3)
这样的东西?
boolean b = true:
try
{
int a = Integer.parseInt(input);
}
catch(NumberFormatException ex)
{
b = false;
}
如果不是整数,则b
将为false,否则为true
答案 1 :(得分:1)
这取决于你所说的“整数”。
如果您的意思是“整数”,最简单和最好的方法是使用正则表达式:
private boolean isInt(String input){
return input.matches("\\d+");
}
如果您的意思是“一个java int
”,那么您必须尝试解析它并将异常视为证明它不是有效的int
:
private boolean isInt(String input){
try {
Integer.parseInt(input);
return true;
} catch (NumberFormatException ignore) {
return false;
}
}
答案 2 :(得分:0)
你可以使用正则表达式,然后方法如下:
private boolean isInt(String input){
return input.matches("\\d+");
}
然后检查一下:
if (isInt(option)){
return Integer.parseInt(option);
} else {
return option;
}