Java检查ParseInt是否为True

时间:2017-10-25 19:25:22

标签: java parsing rgb

我正在使用RGB输入制作换色器,我想在解析时确保输入是整数。如果其中一个RGB值不可解析,那么它应该清除该字段但保留解析正常的字段。我的代码有效,但我必须使用3个try / catch语句,但我希望将其减少为1。如果可能的话,我如何合并所有这三个?

3 个答案:

答案 0 :(得分:1)

  

如果可能,我如何合并所有这三个?

将公共代码移动到辅助方法。我也加了价值范围检查。

isWait
private static int getChannelValue(JTextField field) {
    String error;
    try {
        int value = Integer.parseInt(field.getText());
        if (value >= 0 && value <= 255)
            return value;
        error = "Out of range";
    } catch (NumberFormatException f) {
        error = "Not an integer number";
    }
    JOptionPane.showMessageDialog(null, "No. " + error);
    field.setText("");
    return -1; // invalid
}

答案 1 :(得分:0)

我假设您在点击JButton后收集所有这些值?好吧,而不是这样做,为什么不在客户端完成写入TextFields时存储值,然后在该特定字段上使用parseInt?

field.addFocusListener(new FocusListener() {
            @Override
            public void focusGained(FocusEvent e) { }

            @Override
            public void focusLost(FocusEvent e) {
                // parse and store int here
            }
        });

答案 2 :(得分:0)

由于Color只接受整数0-255,因此您可以使用regex

inputString.matches("[12]?\\d?\\d")

正则表达式接受第一个数字的1/2 /无,第二个数字的数字或任何内容,并且需要第三个数字

这适用于0-255,但也接受05,00和260之类的数字(但不是005,除非你做[012]),但是Integer.parseInt()会把它们弄清楚

您可能还希望排除260之类的值,其中包含:Validate if input string is a number between 0-255 using regex

inputString.matches("1?[0-9]{1,2}|2[0-4][0-9]|25[0-5]"))将排除260之类的值,但不包括05或00