为什么我会在条件下得到异常?

时间:2014-04-24 18:04:37

标签: java

我只想查看10位数的用户输入。用户输入可以是1到10位数。 我还添加了import java.util.* ;

问题:当用户输入大于10的值时发生异常。 如果用户输入超出范围,则使用Long后再出现相同的错误。 错误:线程中的预期" main" java.util.InputMismatchException

我想限制用户只输入1到10位数

更新了代码

  for(int i=0;i<b.length;i++)
    {
        if(b[i][0]==0)
        {
            try
            {
                System.out.println("Enter the account number:");
                a=sc.nextLong();
                int lth = (int) Math.log10(a) + 1;
                if((lth <= 10) && (lth > 0)){
                    System.out.println("Account number is valid");
                    break;
                }
            }
            catch(InputMismatchException e)
            {
                System.out.println("not a valid input");
            }

        }
    }

1 个答案:

答案 0 :(得分:1)

变化

a=sc.nextInt();

a=sc.nextLong();

或者如果您只想要字符串,那么您可以执行以下操作

String input=sc.next();
s1=a.toString();//no need for this

尝试以下

try
            {
                System.out.println("Enter the account number:");
                String ip=sc.next();
                int lth = ip.length();
                if((lth <= 10) && (lth > 0)){
                    System.out.println("Account number is valid");
                    break;
                }
            }