如何设置可以输入的字符数限制? (JAVA)

时间:2014-12-02 02:21:05

标签: java

do{
        out.println("\n---------------------------------");
        out.println("---------------------------------");
        out.print("Please type your acces card number: ");

    try{
        card = input.nextInt();

        if(card.length != 10){
            out.println("The number you typed is incorrect");
            out.println("The number must be 10 numbers long");
        continue;
            }
        }   

        catch(InputMismatchException ex){
            }
    }while(true);    

我试图让卡片长10个字符。如(1234567890),如果用户输入(123)或(123456789098723),则应显示错误消息。 card.length似乎不起作用。

4 个答案:

答案 0 :(得分:3)

只需将int更改为String

   String card = input.next();
   if(card.length() != 10){
      //Do something
   }

您可以在以后轻松将其转换为int

   int value = Integer.parseInt(card);

答案 1 :(得分:3)

你可以改变

if(card.length != 10){

类似

if(Integer.toString(card).length() != 10){

当然,用户可以输入

0000000001

1相同。你可以试试

String card = input.next(); // <-- as a String

然后

if (card.length() == 10)

最后

Integer.parseInt(card)

答案 2 :(得分:0)

在Java中,您无法获得length的{​​{1}}。查找位数的最简单方法是将其转换为int。但是,您也可以进行一些数学计算以找出数字的长度。您可以找到更多信息here

答案 3 :(得分:0)

您无法获得int的长度。如果需要,将输入作为String并稍后将其转换为int会更好。你可以在while循环中进行错误检查,如果你想短路,你可以让while检查显示你的错误信息:

out.println("\n---------------------------------");
out.println("---------------------------------");
out.print("Please type your access card number: ");

do {
    try {
        card = input.nextLine();
    } catch (InputMismatchException ex) {
        continue;
    }
} while ( card.length() != 10 && errorMessage());

errorMessage函数返回true,并显示错误消息:

private boolean errorMessage()
{
    out.println("The number you typed is incorrect");
    out.println("The number must be 10 numbers long");
    return true;
}