如何检查java中的int范围并限制它只有5位数

时间:2011-06-18 11:13:05

标签: java

请帮我完成作业。这是一个问题:

  

创建一个单独的测试驱动程序类   称为TestEmployeePayroll   测试EmployeePayroll类   执行以下操作:

     

提示用户输入   员工的身份证号码,名字,姓氏   姓名,薪资类别和工作小时数   (一次一个)。

     
      
  • 员工ID的用户条目   数字必须正好是5位数。
  •   
  • 仅限类别的用户条目   如果它在1范围内,则被接受   到4。
  •   
  • 工作小时数的用户条目   必须被接受,如果它是   范围1到80。
  •   

这就是我到现在所做的:

import java.util.Scanner;
public class TestEmployeePayRoll {

    public static void main(String[] args){
        EmployeePayRoll obj1 = new EmployeePayRoll();

        Scanner input = new Scanner(System.in);
        System.out.println("Enter the Employee ID number: "+ " ");
        String EmployeeID = input.nextLine();

        //How to check the range here if int is 5 digits long or not ?

        System.out.println("Enter the first Name: "+ " ");
        String FirstName =  input.nextLine();

        System.out.println("Enter Last Name: "+ " ");
        String LastName = input.nextLine();

        System.out.println("Enter the Pay Category: "+ " ");
        double PayCategory = input.nextDouble();

        System.out.println("Enter the number of hours worked: "+ " ");
        double HoursWorked = input.nextDouble();
    }
}

5 个答案:

答案 0 :(得分:2)

您可能希望使用Integer.parseInt()

答案 1 :(得分:1)

您可以计算字符串的长度,然后将其转换为数字, Oli Charlesworth 告诉您如何转换它,或者您可以测量数字。这取决于你想要什么。 012345是有效身份证件吗?它是一个6字符串,但它小于最大的5位数字。

答案 2 :(得分:1)

我想你几乎得到了它......

import java.util.Scanner;
public class TestEmployeePayRoll {

    public static void main(String[] args){
        // ... get the values, as you are doing already
        // validate input
        int employeeIdAsInteger = validateAndConvertEmployeeId(EmployeeId);
        int payCategoryAsInteger = validateAndConvertPayCategory(PayCategory);
        // ... and so on
    }

    private int validateAndConvertEmployeeId(String employeeId) {
        // The user entry for employees ID number must be exactly 5 digits long.
        if (employeeId == null || employeeId.trim().length() != 5) {
            throw new IllegalArgumentException("employee id must be exactly 5 digits long");
        }
        // will throw an exception if not a number...
        return Integer.parseInt(employeeId);
    }
    // ...
}

答案 3 :(得分:0)

取决于您的目标和&约束,您可以查看Pattern类并使用正则表达式。

答案 4 :(得分:0)

您可以检查这样的条件。

import java.util.Scanner;

public class TestEmployeePayRoll {

    public static void main(String[] args) {
        TestEmployeePayRoll obj1 = new TestEmployeePayRoll();

        Scanner input = new Scanner(System.in);
        System.out.println("Enter the Employee ID number: " + " ");
        String EmployeeID = input.nextLine();

        if (EmployeeID.trim().length() != 5) {
            System.out.println("--- Enter valid Employee ID number ---");
        }
        System.out.println("Enter the first Name: " + " ");
        String FirstName = input.nextLine();

        System.out.println("Enter Last Name: " + " ");
        String LastName = input.nextLine();

        System.out.println("Enter the Pay Category: " + " ");

        double PayCategory = input.nextDouble();

        Double pay = new Double(PayCategory);

        if (pay.isNaN()) {
            System.out.println("***** Enter a valid Pay Category *****");
        }
        if (!(PayCategory >= 0 && PayCategory <= 5)) {
            System.out.println(" --- PayCategory must be between 0 and 5");
        }

        System.out.println("Enter the number of hours worked: " + " ");

        double HoursWorked = input.nextDouble();

        Double hours = new Double(HoursWorked);

        if (hours.isNaN()) {
            System.out.println("--- Enter a valid hours value ----");
        } else {
            if (!(HoursWorked >= 1 && HoursWorked <= 80)) {
                System.out.println("--- Enter value between 1 and 80 ---");
            }
        }
    }

}