在编写需要与用户进行交互的Java程序(如图形界面有文本输入框的程序)时,对用户输入的参数进行限制是一件很重要的事情,因为无法预料到用户输入什么,需要对错误的输入进行提示,诱导用户输入正确的参数。如何实现这一点,通常的做法是将输入参数转化成想要的类型,如果转换错误,那么就提示用户。但是如果参数的要求更加详细,例如是IP地址,只能是xxx.xxx.xxx.xxx的格式,那么该如何做呢,下面有一种比较好的方法来实现这种限制。
程序的界面如下图:

需要用户输入目标应用服务器的IP地址和端口号,使用java.util.regex下的Matcher和Pattern类来规范输入,如下:
private boolean portValid(String str){
String ipReg = "\\d+";
Pattern pattern = Pattern.compile(ipReg);
Matcher matcher = pattern.matcher(str);
return matcher.matches();
}
private boolean ipValid(String str){
String ipReg = "\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}";
Pattern pattern = Pattern.compile(ipReg);
Matcher matcher = pattern.matcher(str);
return matcher.matches() || str.equals("localhost");
}
Pattern类用来新建一种模板,模板是用字符串表示的,表达方式简单的学习一下就会使用了,如d(1,3),表示1到3位的整数,d+表示1到多位的整数,如果想要获得更加严格的限制,可以仔细调研这类。Matcher将输入的参数和模板进行匹配,返回匹配结果。通过上述方法,我们就对输入参数进行了很好的限制,而且代码看起来也十分清晰。
接下来,我们就可以调用这2个函数来判断输入是否合理,如果不合理,可以简单的跳出一个对话框进行提示。
if ((ipValid(text.getText()) == false)||(portValid(text_1.getText()) == false)) {
MessageBox mb = new MessageBox(this.getShell(), SWT.ICON_ERROR|SWT.OK);
mb.setText("错误");
mb.setMessage("IP地址或端口号不合法");
mb.open();
}
通过上述步骤,我们就完成了对Java程序中输入参数进行规范的一个例子。
浙公网安备 33010602011771号