如何解决验证int java的错误?

问题描述 投票:-2回答:2

我需要用户输入数字作为字符串,但我需要将其验证为整数,以确保它在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
java int
2个回答
0
投票

猜测这样的事情可以工作

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

0
投票

您没有提供太多信息,但这是一种方法。它从控制台读取一个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;
    }
© www.soinside.com 2019 - 2024. All rights reserved.