我需要用户输入数字作为字符串,但我需要将其验证为整数,以确保它在1到7之间(包括1和7)。
static void editPrivateContract()//menu choice 3
{
int num = 0;
String msg;
msg = " Please enter the number of the Private Contract contract to be edited \t: ";
num = validateInt(msg, 1, privateContractArrayCount);//validating the range of Contracts
privateContractArray[num - 1].displayNumDetails();// for the 0 based array
msg = " \n\nWhich credentials would you like to edit...1-8 \t: ";
int reply = validateInt(msg, 1, 8); //user must select between 1 and 7
猜测这样的事情可以工作
static boolean validateInt(String message,int rangeStart,int rangeEnd)
{
int tmp = 0;
for(int i = 0 ; i < message.length(); i++ )
{
tmp = (message.charAt(i) - '0');
if( tmp < rangeStart || tmp > rangeEnd)
return false;
}
return true;
}
public static void main(String [] args)
{
System.out.println(validateInt("1237",1,3));
System.out.println(validateInt("123",1,3)) ;
System.out.println(validateInt("123",2,3)) ;
}
输出
false
true
false
您也可以使用Integer.parseInt
static boolean validateInt2(String message,int rangeStart,int rangeEnd)
{
int tmp = 0;
try{
tmp = Integer.parseInt(message);
}catch(NumberFormatException parseIntException){
return false;
}
return (tmp > rangeStart && tmp < rangeEnd);
}
您没有提供太多信息,但这是一种方法。它从控制台读取一个int。它也可以读入字符串。
Scanner sc = new Scanner(System.in);
String msg = " \n\nWhich credentials would you like to edit...1-8 \t: ";
int reply = validateInt(sc, msg, 1, 8); // user must select between 1 and 7
public static int validateInt(Scanner sc, String msg, int min, int max) {
int num = 0;
while (num < min || num > max) {
System.out.print(msg);
num = sc.nextInt();
}
return num;
}