java程序员从笨鸟到菜鸟之(十三)Scanner类

来源:互联网 发布:淘宝卖家怎么做微淘 编辑:程序博客网 时间:2024/05/15 01:00

Scanner类

 1)Scanner:用来创建一个文本扫描器(键盘录入)
 2)java高级特性:IO流(后面讲)
      BufferReder:字符缓冲流来键盘录入

System类中的静态字段(后续补充)
   public static final InputStream in:标准输入流
  InputStream :字节流
      用法:InputStream is = System.in ;实质:抽象类多态
  public static final OutputStream out:标准输出流
  开发步骤
  1)创建键盘录入对象
  2)录入数据
  3)输出

实例1:

package org.westos.scanner_01;import java.util.Scanner;public class ScannerDemo {public static void main(String[] args) {//创建键盘录入对象Scanner sc = new Scanner(System.in) ;//录入数据int a = sc.nextInt() ;System.out.println("a:"+a);}}}}

1)Scanner类中常用的方法:

   判断的功能
   细节:可以添加逻辑判断
   hasNextXXX(); 在录入数据之前,加上判断功能,判断是否由下一个可以录入的XXX类型的数据
   nextXXX();通过录入获取这个int类型的数据
           举例:public boolean hasNextInt();
                       返回值类型:boolean
                       nextInt() :录入int类型的数据
                       nextLine():录入一个字符串类型
          异常:java.util.InputMismatchException---输入和想要到的数据不匹配

实例2:

package org.westos.scanner_01;import java.util.Scanner;public class ScannerDemo2 {public static void main(String[] args) {//创建键盘录入对象Scanner sc = new Scanner(System.in) ;if(sc.hasNextInt()){//是否有下一个可以录入的int类型的数据---判断引用是否为空//录入数据int a = sc.nextInt() ;System.out.println("a:"+a);}else{//错误提示System.out.println("录入的数据类型和想要的不匹配!");}//java.util.InputMismatchException:输入和想到的数据不匹配}}
 注意事项:如果先录入int类型的数据,再录入String类型数据,第二次录入的数据没有接收到,直接输出结果了;
 原因:由于"回车"才能接收数据,此时把"回车换行符"当做"字符串"导致的!
 解决方案:在第二次录入String类型数据之前,需要重新创建键盘录入对象录入String类型

实例3:

package org.westos.scanner_01;import java.util.Scanner;public class ScannerDemo3 {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);*///录入两个String类型的数据//hasNextLine/*String a = sc.nextLine() ;String b = sc.nextLine() ;*///先录入String类型的数据,在录入int类型的数据/*String a = sc.nextLine() ;int b = sc.nextInt() ;*///先录入int类型,再录入String类型int a = sc.nextInt() ;               //String b = sc.nextLine() ;String b = sc.next() ;/*int a = sc.nextInt() ;//创建键盘录入对象Scanner sc2 = new Scanner(System.in) ;String b = sc2.nextLine() ;*/System.out.println("a:"+a+",b:"+b);}}

Scanner练习

实例4:

(模拟用户登录玩猜字游戏)

package org.westos.string_03;import java.util.Scanner;//提供猜数字游戏的类public class GuessNumberGame {//构造私有,通过静态功能private GuessNumberGame(){}//静态功能public static void start(){//生成一个随机数:Math.random() ;int number = (int) (Math.random()*100 +1) ;//定义一个统计变量int count = 0 ;//由于多次录入while(true){//创建键盘录入对象Scanner sc = new Scanner(System.in);System.out.println("请您输入一个数据:");int guessNumber = sc.nextInt() ;//统计变量++count ++ ;//判断if(guessNumber > number){System.out.println("您猜的数据"+guessNumber+"大了");}else if(guessNumber < number){System.out.println("您猜的数据"+guessNumber+"小了");}else {System.out.println("恭喜您"+count+"次猜中了...");break ;}}}}
测试类:

package org.westos.string_03;import java.util.Scanner;/** * 需求:模拟用户登陆,给3次机会,并给提示 *  * 分析: *        假设: *      1)定义一个用户和密码 * String name = "admin" ; * String password = "admin" ; * 2)创建键盘录入对象,录入用户名和密码 * 3)给3次机会,使用for循环进行操作for(int x = 0 ; x <3 ; x ++){} *  * 录入:录入的用户和密码来和已经存在的用户名和密码进行比较, * 判断:如果一致: * 登陆成功 * 不一致: * 有一个不符合,就登陆不成功 * if((2-x)==0){ * }else{ * //输出还有(2-x)次机会 * } * */public class StringTest {public static void main(String[] args) {//定义用户名和密码String name = "admin" ;String password = "admin" ;//给3次机会for(int x = 0 ; x <3 ; x ++){//创建键盘录入对象Scanner sc = new Scanner(System.in) ;System.out.println("请输入用户名: ");String newUserName = sc.nextLine() ;System.out.println("请输入密码:");String newPassword = sc.nextLine() ;//判断if(name.equals(newUserName) && password.equals(newPassword)){//一致了System.out.println("登陆成功,开始玩游戏....");//加入猜数字游戏GuessNumberGame.start() ;break ;}else{//登陆不成功//2,1,0//如果是0次机会了,换一种提示if((2-x)==0){System.out.println("速与管理员联系...");}else{//不是0次System.out.println("你还有:"+(2-x)+"次机会");}}}}}

阅读全文
0 0