演示使用Scanner的小技巧

Scanner 类

案例:演示使用Scanner的小技巧

问题描述:先用nextInt()接受整数,然后再用nextLine()接受字符串,导致字符创无法接受。

产生原因:

​ 1.nextInt()方法的结束标记是: \r \t,但是该方法只接受整数,不接受\r \t。

  1. nextLine()方法的结束标记是: \r \t,识别到上边遗留下来的 \r \t后,直接结束了

    原代码

    public static void main(String... args) {
           
          //1.创建对象
          Scanner sc = new Scanner(System.in);
          //2.提示用户输入
          System.out.println("请输入一个整数:");
          //3.调用输入方法,并输出
          int num = sc.nextInt();
          System.out.println("num:" + num);
    
          //接受并输出,字符串
          System.out.println("请输入一个字符串:");
          String str = sc.nextLine();
          System.out.println("str:" + str);
    }
    

    解决方案:

    1.采用next()方法解决

    注意:next()方法结束的标记是空格。

    public static void main(String... args) {
           
          //1.创建对象
          Scanner sc = new Scanner(System.in);
          //2.提示用户输入
          System.out.println("请输入一个整数:");
          //3.调用输入方法,并输出
          int num = sc.nextInt();
          System.out.println("num:" + num);
    
          //接受并输出,字符串
          System.out.println("请输入一个字符串:");
          String str = sc.next();    //使用next()方法
          System.out.println("str:" + str);
    }
    

2.重新调用一次nextLine()

public static void main(String... args) {
     
      //1.创建对象
      Scanner sc = new Scanner(System.in);
      //2.提示用户输入
      System.out.println("请输入一个整数:");
      //3.调用输入方法,并输出
      int num = sc.nextInt();
      System.out.println("num:" + num);

      //接受并输出,字符串
      System.out.println("请输入一个字符串:");
      sc.nextLine();   //再次调用sc.nextLine(),抵消上一\r\t
      String str = sc.nextLine();
      System.out.println("str:" + str);
}

3.重新new一个Scanner对象

public static void main(String... args) {
     
      //1.创建对象
      Scanner sc = new Scanner(System.in);
      //2.提示用户输入
      System.out.println("请输入一个整数:");
      //3.调用输入方法,并输出
      int num = sc.nextInt();
      System.out.println("num:" + num);

      //接受并输出,字符串
      System.out.println("请输入一个字符串:");
      sc = new Scanner(System.in);		//重新new一个Scanner对象
      String str = sc.nextLine();
      System.out.println("str:" + str);
}

4.实际开发中,都用字符串接受用户输入的参数,然后把字符创类型的数字转化成对应的int类型的数字即可。

调用Inter.parseInt()方法将字符串数字转化为int数字

public static void main(String... args) {
     
    //1.创建对象
    Scanner sc = new Scanner(System.in);
    //2.提示用户输入
    System.out.println("请输入一个整数:");
    //3.调用输入方法,并输出
    String s1 = sc.nextLine();
    //将字符串类型的数字转化为int类型
    int num = Integer.parseInt(s1+3);
    System.out.println("num:" + num);

    //接受并输出,字符串
    System.out.println("请输入一个字符串:");
    String str = sc.nextLine();
    System.out.println("str:" + str);
}

你可能感兴趣的:(java)