2014-10-18 189 views
-1

我想要做的是检查用户输入是否合适,如果是,则使用用户输入,否则抛出异常。检查用户输入是否适合

适合只能有一个真实的输入形式是:x,y;x,y;x,y;x,y其中x >= 0 & y > 0。 (xy在每个逗号分隔符中不必具有相同的值,例如真实输入是0,1;2,3;4,5;6,7)如果用户键入其他任何内容,例如"asd"0,1;2,3;4,5(缺少一个x,y),他会得到该异常。我认为我可以处理异常抛出,但问题是我不知道如何检查用户输入是否合适。我不知道是否有必要在这里提供我的代码,因为检查部分不在我的代码中,而其他任何东西都不重要。

守则要求,不知道是出于什么原因,但创造了一些快速例如:

TextField tf1 = new TextField(); 
String inputText = tf1.getText(); 
if (inputText == form(x,y;x,y;x,y;x,y)) { 
    // do things; 
} 
else { 
    throw exception; 
} 
+0

请显示一些代码 – msrd0 2014-10-18 12:32:16

+0

另请参阅http://stackoverflow.com/q/13732047/1076463 – Robin 2014-10-18 13:00:35

回答

0

从测试情况0,1;2,3;4,5,它定义了一个数(“x”)将包含一个不为0的整数序列的零。这将是:

(?:0|[1-9]\d*+) 

从那里,你可以量化的子模式重复节 “x,y” 的其余部分:

(?:0|[1-9]\d*+),[1-9]\d*+(?:;(?:0|[1-9]\d*+),[1-9]\d*+){3}

这里是一个regex demo

0

使用正则表达式

if (inputText.matches("[0-9]+,[1-9]+[0-9]*(?:;[0-9]+,[1-9]+[0-9]*){3}")) 
{ 
    // do things 
}  
+0

Regexp固定,它现在应该工作 – ToYonos 2014-10-23 10:09:13