Java 如何摆脱边做边做的循环?
我正在使用正则表达式验证不包含空格或数字的字符串。但我无法摆脱这个循环。我输入的字符串是正确的 我做错了什么?或者如何摆脱它Java 如何摆脱边做边做的循环?,java,Java,我正在使用正则表达式验证不包含空格或数字的字符串。但我无法摆脱这个循环。我输入的字符串是正确的 我做错了什么?或者如何摆脱它 boolean bien=true; do{ nomc=JOptionPane.showInputDialog(null,"Ingrese el Nombre: ","Clientes",JOptionPane.INFORMATION_MESSAGE); Matcher mat = pat.matcher(nomc); if(mat.find()) //es
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);
谢谢您的帮助。您应该将
bien
变量设置为false,以摆脱if子句中保证从
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);
请注意,布尔表达式出现在循环的末尾,因此
循环中的语句在测试布尔值之前执行一次
如果布尔表达式为true,则控制流跳回到do,循环中的语句再次执行此过程
重复,直到布尔表达式为false。
在代码的这一部分中:
} while(bien);
bien
变成false
这样你就脱离了do-while循环
他们称之为
哨兵值
在编程中,用于终止循环的特殊值。这个
sentinel值通常被选择为非合法数据
循环将遇到并尝试使用的值。对于
例如,在计算非负整数的循环算法中
值“-1”可以根据计算结果设置为sentinel值
永远不要将该值作为合法的处理输出
请格式化您的代码。编辑>突出显示代码>Ctrl+K将
bien
设置为false。或break
您似乎从未更改过bien的值bien
;它的值总是true
,因此循环永远不会退出。如果bien
是字段,并且您希望从其他线程停止此循环,请使此字段也volatile
以防止缓存其值。