返回整数字符串的方法

时间:2013-03-28 12:47:57

标签: java

我必须从控制台读取菜单选项,选项可以是整数或字符串。我的问题是,是否有另一种方法来检查输入是字符串还是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;
    }

}

3 个答案:

答案 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;
        }