Java 方法检查用户输入的格式是否正确
我写这个方法是为了检查不同类型的错误用户输入。我一直在写一个BigInt类,我需要确保没有像“++2”、“--2”、字母、数字被空格分割,比如“222333”或句点。我以前从未使用过字符串拆分器,也没有得到预期的令牌数。例如,如果我在控制台中输入“++2”,tokenCount=1,但我原以为会得到3 有没有办法解决这个问题Java 方法检查用户输入的格式是否正确,java,Java,我写这个方法是为了检查不同类型的错误用户输入。我一直在写一个BigInt类,我需要确保没有像“++2”、“--2”、字母、数字被空格分割,比如“222333”或句点。我以前从未使用过字符串拆分器,也没有得到预期的令牌数。例如,如果我在控制台中输入“++2”,tokenCount=1,但我原以为会得到3 有没有办法解决这个问题 public static boolean checkValidInput(String val) { String input = val; String
public static boolean checkValidInput(String val) {
String input = val;
String[] delims = {"//+", "-", "a", " ", "."};
String[] tokens;
int tokenCount;
boolean validInput = true;
for(int i = 0; i < delims.length; i++) {
tokens = input.split(delims[i]);
tokenCount = tokens.length;
if(delims[i].equals("//+")){
if(tokenCount > 2){
validInput = true;
} else {
validInput = false;
}
} else if(delims[i].equals("-")){
if(tokenCount > 2){
validInput = true;
} else {
validInput = false;
}
} else if(delims[i].equals("a")){
if(tokenCount > 1){
validInput = true;
} else {
validInput = false;
}
} else if(delims[i].equals(" ")){
if(tokenCount > 1){
validInput = true;
} else {
validInput = false;
}
} else if(delims[i].equals(".")){
if(tokenCount > 1){
validInput = true;
} else {
validInput = false;
}
}
}
}
public静态布尔校验有效输入(String val){
字符串输入=val;
字符串[]delims={”//+“,”-“,”a“,”,“,”};
字符串[]标记;
整数计数;
布尔值validInput=true;
对于(int i=0;i2){
validInput=true;
}否则{
validInput=假;
}
}else if(delims[i].等于(“-”){
如果(令牌计数>2){
validInput=true;
}否则{
validInput=假;
}
}else如果(delims[i].等于(“a”)){
如果(令牌计数>1){
validInput=true;
}否则{
validInput=假;
}
}else if(delims[i].等于(“”){
如果(令牌计数>1){
validInput=true;
}否则{
validInput=假;
}
}else if(delims[i].等于(“.”){
如果(令牌计数>1){
validInput=true;
}否则{
validInput=假;
}
}
}
}
试试正则表达式
input.matches("[+-]?\\d+");
您得到的计数是
1
,因为您错误地转义了特殊字符+
(在正则表达式中,它有一个特殊的含义)。应使用\\
对其进行转义:
String[] delims = {"\\+", "-", "a", " ", "."};
注意方法split(String)
需要一个正则表达式作为参数