1. 从键盘读取字符, 可以连续不断的输入字段,直到输入exit就退出程序。但此程序存在的问题是:输入字符之间有空格,则空格后面的不会被读取。
 
private static void readLineFromKeyboard() {
                while(true){
                        Scanner scan = new Scanner(System.in);// 从键盘接收数据
                        String str = scan.next();
                        if(str.equals("exit")){
                                System.exit(0);
                        }
                        System.out.println(str);
                        
                }
        }

2. 由于存在分隔符问题,即输入字符之间存在空格之类,则只能输入前一部分。 使用useDelimiter方法可以避免这种事情发。
 
Scanner scan = new Scanner(System.in) ;  // 从键盘接收数据
    System.out.print("输入数据:") ;
    scan.useDelimiter("\n") ;
    String str = scan.next() ;  // 接收数据
    System.out.println("输入的数据为:" + str) ;

将1和2两种情况结合起来,代码为:
private static void readLineFromKeyboard() {
                while(true){
                        Scanner scan = new Scanner(System.in);
                        System.out.print("输入数据:") ;
                        scan.useDelimiter("\n"); // 忽略\n
                        String str = scan.next();
                        if(str.equals("exit\r")){// 回车换行为\n\r, 则剩下\r
                                System.exit(0);
                        }
                        System.out.println("输入的数据为:" + str) ;
                }
        }



3. 输入各种数据的例子
 
Scanner scan = new Scanner(System.in) ;  // 从键盘接收数据
    int i = 0 ;
    float f = 0.0f ;
    System.out.print("输入整数:") ;
    if(scan.hasNextInt()){  // 判断输入的是否是整数
      i = scan.nextInt() ;  // 接收整数
      System.out.println("整数数据:" + i) ;
    }else{
      System.out.println("输入的不是整数!") ;
    }
    System.out.print("输入小数:") ;
    if(scan.hasNextFloat()){  // 判断输入的是否是小数
      f = scan.nextFloat() ;  // 接收小数
      System.out.println("小数数据:" + f) ;
    }else{
      System.out.println("输入的不是小数!") ;
    }

4. 上面的方式都能收正常的数据,但是对日期类型的数据确实不行的,需要用到正则匹配才能处理hasNext(Pattern pattern) 
 
Scanner scan = new Scanner(System.in) ;  // 从键盘接收数据
    String str = null ;
    Date date = null ;
    System.out.print("输入日期(yyyy-MM-dd):") ;
    if(scan.hasNext("^\\d{4}-\\d{2}-\\d{2}$")){  // 判断
      str = scan.next("^\\d{4}-\\d{2}-\\d{2}$") ;  // 接收
      try{
        date = new SimpleDateFormat("yyyy-MM-dd").parse(str) ;
      }catch(Exception e){}
    }else{
      System.out.println("输入的日期格式错误!") ;
    }
    System.out.println(date) ;




5. 接受文件中的数据
File f = new File("D:" + File.separator + "test.txt") ;  // 指定操作文件
    Scanner scan = null ;
    try{
      scan = new Scanner(f) ;  // 从键盘接收数据
    }catch(Exception e){}
    StringBuffer str = new StringBuffer() ;
    while(scan.hasNext()){
      str.append(scan.next()).append('\n')  ;  //  取数据
    }
    System.out.println("文件内容为:" + str) ;

可见Scanner读取数据还是很方便的,同时注意分隔符。