初学者Java程序

时间:2015-05-09 11:24:50

标签: java java.util.scanner

我是Java的初学者,我有以下代码:

public class test
{
   public static void main(String[] args) 
   {
      int a ;
      String b;

      Scanner input = new Scanner(System.in);
      try {

        System.out.println("Enter a: ");
        a = input.nextInt();

    } catch(Exception e )
    {
        System.out.println("That is not a number!");
    }

      System.out.println("Enter your name: ");
      b = input.next();
      System.out.println("Hello " + b);

    }
}

当我给出一个字符串而不是int时,代码执行得更远,我收到了这个结果:

"Enter a:
fsd
That is not a number!
Enter your name: 
Hello fsd"

如何在捕获后中断? (我已经在捕获后尝试使用新的扫描仪,但我认为还有其他方法) 提前谢谢!

LE:我已经设法用" input.next();"来做到这一点。我实际上想要为字符串b提示另一个值,但是程序会自动获取int而不是新值并打印" Hello vsd",尽管vsd是a的输入。

4 个答案:

答案 0 :(得分:2)

the documentation所述,如果当前令牌与整数格式不匹配,Scanner将不会前进到下一个令牌。因此,如果没有抛出异常,则令牌未被消耗,您只需在下次调用nextXYZ方法时获取该消息。

  

将输入的下一个标记扫描为int。如果下一个标记无法转换为有效的int值,则此方法将抛出InputMismatchException,如下所述。如果翻译成功,扫描仪将超过匹配的输入。

您可以使用hasNextInt()提前检查,而不是抛出和捕获异常(这是一个繁重的操作):

int a ;
String b;

Scanner input = new Scanner(System.in);
System.out.println("Enter a: ");
if (input.hasNextInt()) {
    a = input.nextInt();
} else {
    System.out.println("That is not a number!");
    // Skip the token so you won't get it later:
    input.nextLine();
}

System.out.println("Enter your name: ");
b = input.next();
System.out.println("Hello " + b);

答案 1 :(得分:1)

试试这个

public class Test{
public static void main(String[] args){
  int a ;
  String b;
  Scanner input = new Scanner(System.in);
  try {

    System.out.println("Enter a: ");
        a = input.nextInt();
    System.out.println("Enter your name: ");
        b = input.next();
    System.out.println("Hello " + b);

    }
  catch(Exception e ){
    System.out.println("That is not a number!");
    }
}
}

答案 2 :(得分:0)

只需修改你的catch块如下:

catch(Exception e )
     {
        System.out.println("That is not a number!");
        System.exit(0);
     }

答案 3 :(得分:0)

您应该尝试使用以下块

input.hasNextInt()

因为它不要求你使用catch或throw异常,而是if和else语句。

您的代码仍在继续,因为catch块只是捕获异常并将其替换为 System.out.println ,它打印“这不是数字!”

   } catch(Exception e )
{
    System.out.println("That is not a number!");
}

这样做后代码继续

 System.out.println("Enter your name: ");
 b = input.next();
 System.out.println("Hello " + b);