我想强迫用户输入5个长度长的数字( ),并将它们存储在一个int变量中,该变量包括前导0。
例如,程序应允许用户输入:
12345
04123
00012
但它不适用于:
123456
4123
001
我尝试过...
if(int x < 99999){
//continue with code
}
这仅在用户输入的长度超过5个时才起作用,但不能解决用户输入的int长度小于5个的问题
答案 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()