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
以防止缓存其值。