• 12-01 Java Scanner类,Scanner类中的nextLine()产生的换行符问题


    分析理解:Scanner sc = new Scanner(System.in);
    package cn.itcast_01;
    
    /*
     * Scanner:用于接收键盘录入数据。
     * 
     * 前面的时候:
     *         A:导包
     *         B:创建对象
     *         C:调用方法
     * 
     * 分析理解:Scanner sc = new Scanner(System.in);
     * System类下有一个静态的字段:
     *         public static final InputStream in; 标准的输入流,对应着键盘录入。
     * 
     *         InputStream is = System.in;
     * 
     * class Demo {
     *         public static final int x = 10;
     *         public static final Student s = new Student();
     * }
     * int y = Demo.x;
     * Student s = Demo.s;
     * 
     * 
     * 构造方法:
     *         Scanner(InputStream source)
     */
    import java.util.Scanner;
    
    public class ScannerDemo {
        public static void main(String[] args) {
            // 创建对象
            Scanner sc = new Scanner(System.in);
    
            int x = sc.nextInt();
            
            System.out.println("x:" + x);
        }
    }

    Scanner类的hasNextInt()和nextInt()方法

    package cn.itcast_02;
    
    import java.util.Scanner;
    
    /*
     * 基本格式:
     *         public boolean hasNextXxx():判断是否是某种类型的元素
     *         public Xxx nextXxx():获取该元素
     * 
     * 举例:用int类型的方法举例
     *         public boolean hasNextInt()
     *         public int nextInt()
     * 
     * 注意:
     *         InputMismatchException:输入的和你想要的不匹配
     */
    public class ScannerDemo {
        public static void main(String[] args) {
            // 创建对象
            Scanner sc = new Scanner(System.in);
    
            // 获取数据
            if (sc.hasNextInt()) {
                int x = sc.nextInt();
                System.out.println("x:" + x);
            } else {
                System.out.println("你输入的数据有误");
            }
        }
    }

    Scanner类中的nextLine()产生的换行符问题

    package cn.itcast_03;
    
    import java.util.Scanner;
    
    /*
     * 常用的两个方法:
     *         public int nextInt():获取一个int类型的值
     *         public String nextLine():获取一个String类型的值
     * 
     * 出现问题了:
     *         先获取一个数值,在获取一个字符串,会出现问题。
     *         主要原因:就是那个换行符号的问题。
     * 如何解决呢?
     *         A:先获取一个数值后,在创建一个新的键盘录入对象获取字符串。
     *         B:把所有的数据都先按照字符串获取,然后要什么,你就对应的转换为什么。
     */
    public class ScannerDemo {
        public static void main(String[] args) {
            // 创建对象
            Scanner sc = new Scanner(System.in);
    
            // 获取两个int类型的值
            // int a = sc.nextInt();
            // int b = sc.nextInt();
            // System.out.println("a:" + a + ",b:" + b);
            // System.out.println("-------------------");
    
            // 获取两个String类型的值
            // String s1 = sc.nextLine();
            // String s2 = sc.nextLine();
            // System.out.println("s1:" + s1 + ",s2:" + s2);
            // System.out.println("-------------------");
    
            // 先获取一个字符串,在获取一个int值
            // String s1 = sc.nextLine();
            // int b = sc.nextInt();
            // System.out.println("s1:" + s1 + ",b:" + b);
            // System.out.println("-------------------");
    
            // 先获取一个int值,在获取一个字符串,这里会出问题
            // int a = sc.nextInt();
            // String s2 = sc.nextLine();
            // System.out.println("a:" + a + ",s2:" + s2);
            // System.out.println("-------------------");
    
            int a = sc.nextInt();
            Scanner sc2 = new Scanner(System.in);
            String s = sc2.nextLine();
            System.out.println("a:" + a + ",s:" + s);
        }
    }
  • 相关阅读:
    内核初始化. Part 4【转】
    fixmap addresses原理【转】
    linux内核调试项【转】
    Linux Suspend流程分析【转】
    Linux电源管理-Suspend/Resume流程【转】
    Linux驱动开发常用调试工具---之内存读写工具devmem和devkmem【转】
    内核regmap机制【转】
    ARM NVIC控制器(基于cortex-M4)【转】
    Linux设备树语法详解-中断【转】
    [Go] 第一个单词首字母变大写:Ucfirst(),第一个单词首字母变小写:Lcfirst()
  • 原文地址:https://www.cnblogs.com/baiyangyuanzi/p/6855190.html
Copyright © 2020-2023  润新知