如何摆脱Do While循环?

时间:2014-11-10 01:08:01

标签: java

我正在使用正则表达式验证不包含空格或数字的字符串。但我无法摆脱困境。我输入的字符串是正确的。

我做错了什么?或者如何摆脱它?

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);

感谢您的帮助。

1 个答案:

答案 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值   永远不会将这个价值作为合法的处理输出。

source