0

コンソールからメニューのオプションを読み取る必要があり、オプションは整数または文字列にすることができます。私の質問は、入力が文字列または整数であることを確認する別の方法があるかどうかです

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

}
4

3 に答える 3

3

このようなもの?

boolean b = true:
try 
{ 
     int a = Integer.parseInt(input); 
} 
catch(NumberFormatException ex) 
{ 
      b = false;
}

整数でない場合bは false になるか、そうでない場合は残りますtrue

于 2013-03-28T12:50:03.997 に答える
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;
    }
}
于 2013-03-28T12:55:53.307 に答える
0

正規表現を使用すると、メソッドは次のようになります。

private boolean isInt(String input){
    return input.matches("\\d+");
}

次に、それを確認します。

        if (isInt(option)){
            return Integer.parseInt(option);
        } else {
            return option;
        }
于 2013-03-28T12:55:29.853 に答える