是否可以为小数点创建if-then语句?

时间:2019-03-21 03:40:07

标签: java

我有一个分数计算器GUI,并且我需要一个条件,即它只接受整数,并且如果用户在输入数字时输入小数点,则会输出一条错误消息。

enter image description here

这是我的GUI。

这是我的GUI代码:

@Override
public void actionPerformed(ActionEvent e) {

    if (e.getSource() == this.computeButton){
        try {
            Fraction f1 = new Fraction(Integer.parseInt(Num1.getText()), Integer.parseInt(Den1.getText()));
            Fraction mixed1 = new Fraction(Integer.parseInt(Mixed1.getText()),1);
            Fraction f2 = new Fraction(Integer.parseInt(Num2.getText()), Integer.parseInt(Den2.getText()));
            Fraction mixed2 = new Fraction(Integer.parseInt(Mixed2.getText()),1);
            Fraction ff1= f1.mul(mixed1);
            Fraction ff2 = f2.mul(mixed2);
            if (!Mixed1.getText().isEmpty())
                ff1.setWholeNumber(Integer.parseInt(Mixed1.getText()));
            if (!Mixed2.getText().isEmpty()){
                ff2.setWholeNumber(Integer.parseInt(Mixed2.getText()));
            }
            Fraction res;
            switch (comboBox1.getSelectedIndex()){
                case 0: //addition
                    res = ff1.add(ff2);

                    break;
                case 1://subtraction
                    res = ff1.sub(ff2);
                    break;
                case 2://multiplication
                    res = ff1.mul(ff2);
                    break;
                case 3://division
                    res = ff1.div(ff2);
                    break;

                default: res = new Fraction(1,1);
            }
            Label.setText(res.getResult());
            Decimal.setText(Double.toString(res.toDecimal()));
        }catch (Exception ex){
         ex.getMessage();
        }
    }
}

是否可以为此类问题创建方法?

3 个答案:

答案 0 :(得分:3)

这是编写验证字符串是否为有效整数值的函数的简单方法:

boolean isValidInteger(String str) {
    try {
        Integer.parseInt(str);
    } catch (NumberFormatException ignore) {
        return false;
    }
    return true;
}

您还可以将错误处理合并到您自己的输入解析中,这样就无需调用Integer.parseInt()两次。

答案 1 :(得分:1)

您可以使用parseInt获得所需的结果。 JOptionPane可以显示输入错误

JTextField txtField = new JTextField();
int displayValue;
String displayTextField = txtField.getText();
if(!"".equals(displayTextField ))
{
  try
  {
   displayValue = Integer.parseInt(displayTextField);
  }
  catch (NumberFormatException e)
  {
   javax.swing.JOptionPane.showConfirmDialog(null, "Wrong number, please enter Integer number", "Error", javax.swing.JOptionPane.PLAIN_MASSAGE);
   return;
  }
}

答案 2 :(得分:0)

如果用户输入小数点,是否要引发错误?更好的用户界面(UI)会带来更好的用户体验,只会阻止用户输入除数字之外的任何东西,甚至可能输入符号。

您可以通过TextFormatter来设置TextField.setTextFormatter,以确保该值是有效的整数。

如果您仍然想检查一个值是否有小数点,可以通过尝试使用Integer.parseInt()(或Long.parseLong())解析它,或遍历字符来轻松实现。并确保所有字符都是数字,并允许第一个字符为符号。