菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
43
0

Scanner用户交互及拓展及应用

原创
05/13 14:22
阅读数 1862

Scanner对象

通过Scanner类获取键盘输入让我们跟电脑互动起来

  • 之前我们学习的基本中我们并没有实现程序和人的交互,但是Java给我们提供了一个工具类,我们可以给通过获取用户输入。java.util.Scanner 是Java5的新特征我们可以通过Scanner类来获取用户输入

  • 基本语法

    Scanner scanner = new Scanner(System.in); 

    通过这个来开始

    scanner.close();

    通过这个来结束

  • 通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取之前我们一般需要使用hasNext()与haoNsetLine()判断是否还有数据输入

next()

import java.Scanner//导入Scanner的包
public class Dame{
   public static void main(String[] args){
       //创建一个扫描器对象,用于接收键盘数据
       Scanner scanner= new Scanner(System.in);//程序会等待用户输入完毕
       //创建了一个这个对象通过System.in进行接收用户输入并且封装成Scanner对象
       System.out.println("使用next方式接收:")
       //hasNext()判断是否有输入
       if(scanner.hasNext()){
           //使用next方式接收
           String str = scanner.next();
           System.out.publin("输入内容为"+str)
      }
       scanner.close();//通过这个来关闭
  }
}

如果使用IO流的类如果不关闭会一直占用资源,要养成好习惯用完就关掉

我们来输入一下Hello Would来看下

 

 

 

我们可以发现,我们输入的Hello Would它只输出了Hello,我们先在来看下下一个nextLune()然后再来总结下

nextLine()

import java.util.Scanner;

public class Demo02 {
   public static void main(String[] args) {
       Scanner scanner = new Scanner(System.in);
       System.out.println("使用nextline方式接收");
       if(scanner.hasNextLine()){
           String str = scanner.nextLine();
           System.out.println("输出内容为:"+str);
      }
      scanner.close();
  }
}

这次我们直接复制一下把 next() 改为 nextLine() 我们再来输出一下Hello World

 

 

这次我们可以 发现它输出了完整的Hello World而上一个它只输出了Hello

总结next()和nextLine()的区别

  • next()

    • 一定要读取到有效字符后才可以结束输入

    • 对输入有效字符之前遇到的空白,next()会自动将其去掉

    • 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符

    • next()不能得到带有空格的字符串

  • nextLine()

    • 可以以Enter为结束符,也就是说next LIne()方法返回的是输入回车之前的所有字符

    • 可以获得空白

    从这我们可以看出为什么第一个它只输出了前半部分而第二个输出了全部

前面的我们都通过判断才输出的,当然也可以不用判断来输出我们可以在来演示一下

import java.util.Scanner;

public class Demo03 {
   public static void main(String[] args) {
       Scanner scanner = new Scanner(System.in);
       System.out.println("请输入数据");
       String str=scanner.nextLine ();
       System.out.println("输入内容为" + str);
       scanner.close();

  }
}

这次我们没有进行判断它用户有没有进行字符输入我们在来看下结果

 

 

所以它进不进行判断都可以使用

Scanner 进阶

它的int 和 float怎么用

int整数使用和float小数使用

if语句是一个判断语句目前先跟着敲一下以后我们会进行学习

import java.util.Scanner;
public class Demo{
   public static void main(String[] args){
       Scanner scanner=new Scanner(System.in);//固定开启格式
       int i=0;//先定义i为int类型
       float f=0.0f;//先定义f为float类型
       System.out.println("请输入数据");
       if(scanner.hasNextInt()){//判断是否输入整数
           i =scanner.nextInt();//获取整数输入
           System.out.println("您输入的数据为整数是:"+i);
      }else if(scanner.hasNextFloat()){//判断是否输入小数
           f =scanner.nextFloat();//获取小数输入
           System.out.println("您输入的是小数为:"+f);
      }  
     scanner.close();  //固定结束格式
  }
}

我们先来输入整数看一下

 

 

我们在来输入小数看一下

 

 

我们学习了这个来做一个简单的需求,我们可以输入多个数字,并求其总和和平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并执行结果

import java.util.Scanner;
public class Demo{
   public static void main(String[] args){
      Scanner scanner=new Scanner(System.in);
   double i=0;//和
       
   int m=0;//输出了几个数
       
   System.out.println("请输入数据:");
       
   while(scanner.hasNextDouble()){//while循环判断有无数据输入
   double b=scanner.nextDouble();//获取double型输入
   m++;//让m做自增
   i=i+b; //输出的和为
  }
      System.out.println("他们的和为:"+i+"他们的平均数为:"+(i/m)); //进行结果输出    
   scanner.close();
  }
}

我们来输出三个十来看下结果

 

 

我们成功的通过输入回车来确认通过输入字符来结束运算

发表评论

0/200
43 点赞
0 评论
收藏
为你推荐 换一批