我在程序上进行输入验证时遇到麻烦。
public static boolean inputValidation(String input) {
for ( int i = 0; i < input.length(); i++){
char c = input.charAt(i);
if (!Character.isDigit(c) && c != A || c != J || c != Q || c != K || c != 'a' || c != 'j' || c != 'q' || c != 'k') {
return false;
}
}
return true;
}
到目前为止,这是我的代码,但是当我将其与其余代码一起运行时,它没有正确验证它,它只会照常继续执行程序
int input1 = humanVersion(operands[0]);
int input2 = humanVersion(operands[1]);
String input1String = String.valueOf(input1);
String input2String = String.valueOf(input2);
boolean valid1 = inputValidation(input1String);
boolean valid2 = inputValidation(input2String);
while (!valid1 || !valid2){
if (!valid1){
System.out.println("invalid input 1");
}
if (!valid2){
System.out.println("invalid input 2");
}
System.out.println("Enter valid input: ");
stringInput = scan.nextLine();
operands = stringInput.split(" ");
//
input1 = humanVersion(operands[0]);
input2 = humanVersion(operands[1]);
//
input1String = String.valueOf(input1);
input2String = String.valueOf(input2);
//
valid1 = inputValidation(input1String);
valid2 = inputValidation(input2String);
}
该程序基于用户输入的两个数字相加并相乘,这些数字基于基于14的数字系统。字符0-9,A,J,K和Q。 我的想法是查看输入中是否存在除A,J,K和Q以外的其他字母,然后再次询问输入是否存在无效的字母。
答案 0 :(得分:1)
问题出在您的 inputValidation()方法
c != A
,您应该将A
括在单个反斜杠中,因为您在这里指的是字符,而不是变量||
。您可以像这样修改if语句,然后它应该可以工作
if (!(Character.isDigit(c) || c == 'A' || c == 'J' || c == 'Q'
|| c == 'K' || c == 'a' || c == 'j' || c == 'q' || c == 'k')) {
...
或者使用您的逻辑,将&&
放在各处:
if (!Character.isDigit(c) && c != 'A' && c != 'J' && c != 'Q'
&& c != 'K' && c != 'a' && c != 'j' && c != 'q' && c != 'k') {