如何强制用户为int输入固定数量的数字?

时间:2019-05-17 21:36:59

标签: java validation int

我想强迫用户输入5个长度长的数字( ),并将它们存储在一个int变量中,该变量包括前导0。

例如,程序应允许用户输入:

12345
04123
00012

但它不适用于:

123456
4123
001

我尝试过...

  if(int x < 99999){
  //continue with code
  }

这仅在用户输入的长度超过5个时才起作用,但不能解决用户输入的int长度小于5个的问题

3 个答案:

答案 0 :(得分:1)

我认为您应该以字符串形式而不是以int形式输入,如果验证正确,则可以将其解析为整数,如下所示:

import java.util.Scanner;

public class main {

public static void main(String[] args) {
    /// take input
    String userInput = "";
    Scanner sc = new Scanner(System.in);
    userInput = sc.nextLine();
    int input ;
    // validation test
    if(userInput.length() == 5) {
        input = Integer.parseInt(userInput);
    }else {
        // you can display an error message to user telling him that he should enter 5 numbers!
    }
}

}

但是您必须知道,将其解析为int后,如果存在前导零,它可能会消失。

答案 1 :(得分:0)

像这样的疯狂简单的事情。缺乏边缘案例处理(阅读:负值)

boolean matchesLength(int n, int lengthLim){
    char[] charArr = (n + "").toCharArray();
    return (charArr.length == lengthLim);
}

答案 2 :(得分:0)

两个功能。首先,验证输入:

Partner

第二,获取用户输入:

static boolean is_valid_number(String x) {
    // returns true if the input is valid; false otherwise
    if(x.length != 5 || Integer.valueOf(x) > 99999) {  
        // Check that both:
        //    - input is exactly 5 characters long
        //    - input, when converted to an integer, is less than 99999
        // if either of these are not true, return false
        return false;
    }
    // otherwise, return true
    return true;
}

如果给定的输入根本不是整数,您可能还必须执行一些错误处理。您可以像这样简洁地实现static int get_user_input() { // Create a scanner to read user input from the console Scanner scanner = new Scanner(System.in); String num = ""; do { // Continuously ask the user to input a number System.out.println("Input a number:"); num = scanner.next(); // and continue doing so as long as the number they give isn't valid } while (!is_valid_number(num)); return Integer.valueOf(num);

is_valid_number()