我正在使用正则表达式验证不包含空格或数字的字符串。但我无法摆脱困境。我输入的字符串是正确的。
我做错了什么?或者如何摆脱它?
boolean bien=true;
do{
nomc=JOptionPane.showInputDialog(null,"Ingrese el Nombre: ","Clientes",JOptionPane.INFORMATION_MESSAGE);
Matcher mat = pat.matcher(nomc);
if(mat.find()) //esto válida la cadena, si es correcto envía mi cadena a otra clase que estoy usando para guardar el dato
{
pm.ficheros(nomc);
}
else
{
JOptionPane.showMessageDialog(null,"Valor inválido: Evite números y espacios. Intentelo de nuevo","Error",JOptionPane.WARNING_MESSAGE);
}
} while(bien);
感谢您的帮助。
答案 0 :(得分:2)
您应该将bien
变量设置为false,以便从if子句中退出while循环,以保证来自
if(mat.find())
{
//this valid string , if successful sends my chain to another class that
// I am using to save the data
pm.ficheros(nomc);
bien = false;
}
所以基于以下的防守
do
{
//Statements
}while(Boolean_expression);
请注意,布尔表达式出现在循环的末尾,所以 循环中的语句在测试布尔值之前执行一次。
如果布尔表达式为真,则控制流跳回来执行,循环中的语句再次执行。 此过程 重复,直到布尔表达式为假。
代码的这一部分:
} while(bien);
bien
变为false
,因此您不在循环播放
他们称之为
哨兵价值
在编程中,用于终止循环的特殊值。该 通常选择哨兵值以便不是合法数据 循环将遇到并尝试执行的值。对于 例如,在计算非负整数的循环算法中, 价值" -1"可以像计算一样设置为sentinel值 永远不会将这个价值作为合法的处理输出。