21xrx.com
2024-12-22 22:00:29 Sunday
登录
文章检索 我的文章 写文章
《Java 简易计算器:限制输入内容》
2023-06-17 04:36:46 深夜i     --     --
Java 计算器 正则表达式

近年来,Java 简易计算器已经成为了许多初学者入门编程的首选项目。然而,简易计算器中的输入限制却是一个容易被忽略的问题。本文将向您介绍如何通过 Java 语言的正则表达式,来限制简易计算器中无效的输入内容。

首先,我们需要编写正则表达式来指定无效的输入内容。比如,我们想限制计算器中不能出现字母和除号,则需要使用如下正则表达式:


String regex = "^[^a-zA-Z/\s]*$";

这个正则表达式定义了一个以非字母和除号(非空白字符)开头,后续可以是任意字符的输入串。

然后,我们需要在计算器的代码中使用这个正则表达式。假设我们使用 JTextField 来接收用户输入,我们可以使用下面的代码来限制输入内容:


JTextField textField = new JTextField();

((AbstractDocument) textField.getDocument()).setDocumentFilter(new DocumentFilter() {

  public void replace(DocumentFilter.FilterBypass fb, int offset, int length, String text,

            AttributeSet attrs) throws BadLocationException {

    String newValue = fb.getDocument().getText(0, fb.getDocument().getLength())

        .substring(0, offset)

        + text

        + fb.getDocument().getText(fb.getDocument().getLength() - length, length)

            .substring(length);

    if (newValue.matches(regex)) {

      super.replace(fb, offset, length, text, attrs);

    } else {

      // 撤销非法输入

      Toolkit.getDefaultToolkit().beep();

    }

  }

});

这段代码将一个 DocumentFilter 挂到textField上面,在fb.replace被调用之前,先根据正则表达式验证要插入的字符串是否符合规范,如果不符合则撤销操作。

至此,限制 Java 简易计算器中无效输入内容的问题已经解决。如果您有需要,可以根据不同的输入规范来定制化正则表达式。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复