Java异常

xiaoxiao2021-02-28  87

在java异常练习的时候,有这样一个问题:            如题:

1. 写一个方法,从键盘输入一个整数,如果输入的不是整数,则提示输入有误,请重新输入,直到输入正确为止。

分析如下:使用ScannernextInt时,如果输入的是一个字符的话,那么会有InputMismatchException异常产生,那么我使用一个while(true)循环,在循环中输入的时候捕获该异常,如果没有异常,那么就是说nextInt能够获取到正确值,那么下一句直接break结束循环,然后打印输出;如果捕获到异常,那么继续循环。

 

实际运行的时候发现,如果输入了字符,结果会一直输出异常信息(在catch中加入了printStackTrace),想了想,大概和C中类似,输入缓冲区中的字符不能正常获取,所以在那里,那么如何清空输入缓冲区呢,,C下可以使用fflush(stdin)的方式,Java下没有呀,而使用Scanner的时候传入了System.in,那如果我再new一个Scanner就会指向这个新创建的Scanner。

[java]  view plain  copy package cn.lfsenior.throwexercise;      import java.util.Scanner;      /**   *   * @author wingsgod   *   */   public class Demo1 {          static Scanner input = new Scanner(System.in);          public static void main(String[] args) {           while (true) {               try {                   acceptPrint();                   break;               } catch (Exception e) {                   // TODO Auto-generated catch block                   input = new Scanner(System.in);               }           }       }          public static void acceptPrint() {           System.out.println("请输入一个整数:");           int temp = input.nextInt();           System.out.println(temp);       }   }  
转载请注明原文地址: https://www.6miu.com/read-54182.html

最新回复(0)